数据处理的命令太复杂了?来看看数据巫师datawizard
点击蓝字 关注我们
数据处理是我们作为生信研究人员最重要也是最麻烦的一步,R包千罗万象,要求的格式也是五花八门的,有经验的小伙伴应该可以明白,在我们跑数据的过程中,最头疼的不是后续代码的运行,是第一步!数据的处理,而今天小果想给大家介绍的这个R包就是一个轻量化的数据处理包,函数的命令具有明显的逻辑性,清晰易懂。它就是数据巫师–datawizardR包!
datawizardR包是一个十分神奇的R包,它可以帮助你轻松地完成数据分析的各个步骤,比如整理数据、预处理数据、转换数据、计算数据的统计量等等。它就像一个数据魔法师,可以用简单的函数来操纵数据,让你的数据分析变得更加快速和高效。
接下来,就让小果带着大家一起了解这个R包吧!
# Step 0 安装并载入
options(timeout = 999)options(stringsAsFactors = F)if(!require(datawizard))devtools::install_github("easystats/datawizard")library(datawizard)library(tidyverse)
数据清洗
colnames(mtcars)## [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"## [11] "carb"# 直接筛选某列数据data_match(mtcars, data.frame(vs = 0, am = 1))## mpg cyl disp hp drat wt qsec vs am gear carb## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8# 限定条件进行筛选data_filter(mtcars, mpg < 20 & mpg > 15)## mpg cyl disp hp drat wt qsec vs am gear carb## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3# 可以通过find_columns() 或 get_columns() 来查找数据框中的列,或检索所选列的数据find_columns(mtcars, ends_with("p"))## [1] "disp" "hp"get_columns(mtcars, ends_with("p")) %>% head() # 或者是starts_with()## disp hp## Mazda RX4 160 110## Mazda RX4 Wag 160 110## Datsun 710 108 93## Hornet 4 Drive 258 110## Hornet Sportabout 360 175## Valiant 225 105# 提取变量data_extract(mtcars, "mpg")## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4## [16] 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7## [31] 15.0 21.4data_extract(mtcars, ends_with("p")) %>% head()## disp hp## Mazda RX4 160 110## Mazda RX4 Wag 160 110## Datsun 710 108 93## Hornet 4 Drive 258 110## Hornet Sportabout 360 175## Valiant 225 105# 删除变量data_remove(mtcars, "disp") %>% head()## mpg cyl hp drat wt qsec vs am gear carb## Mazda RX4 21.0 6 110 3.90 2.620 16.46 0 1 4 4## Mazda RX4 Wag 21.0 6 110 3.90 2.875 17.02 0 1 4 4## Datsun 710 22.8 4 93 3.85 2.320 18.61 1 1 4 1## Hornet 4 Drive 21.4 6 110 3.08 3.215 19.44 1 0 3 1## Hornet Sportabout 18.7 8 175 3.15 3.440 17.02 0 0 3 2## Valiant 18.1 6 105 2.76 3.460 20.22 1 0 3 1# 变量重命名data_rename(mtcars, select = "rename", before = "disp") %>% head()## 1 2 3 4 5 6 7 8 9 10 11## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1# 合并数据框## 创建两个示例数据框x <- data.frame(a = 1:3, b = c("a", "b", "c"), c = 5:7, id = 1:3)y <- data.frame(c = 6:8, d = c("f", "g", "h"), e = 100:102, id = 2:4)x## a b c id## 1 1 a 5 1## 2 2 b 6 2## 3 3 c 7 3y## c d e id## 1 6 f 100 2## 2 7 g 101 3## 3 8 h 102 4## 这里是一些数据框合并的连接方式哦,熟悉SQL的小伙伴应该就不会觉得陌生啦,这里小果就啰嗦一点,每个都解释一下哦~# 全外连接,保留所有行,无论在哪个数据集中是否有匹配。data_merge(x, y, join = "full")## a b c id d e## 3 1 a 5 1 <NA> NA## 1 2 b 6 2 f 100## 2 3 c 7 3 g 101## 4 NA <NA> 8 4 h 102# 左连接,保留左边数据集中的所有行,并将右边数据集中的匹配行合并。data_merge(x, y, join = "left")## a b c id d e## 3 1 a 5 1 <NA> NA## 1 2 b 6 2 f 100## 2 3 c 7 3 g 101# 右连接,保留右边数据集中的所有行,并将左边数据集中的匹配行合并。data_merge(x, y, join = "right")## a b c id d e## 1 2 b 6 2 f 100## 2 3 c 7 3 g 101## 3 NA <NA> 8 4 h 102# 内连接,只保留在两个数据集中都有匹配的行。data_merge(x, y, join = "inner")## a b c id d e## 1 2 b 6 2 f 100## 2 3 c 7 3 g 101# 将所有数据保存,上下合并。data_merge(x, y, join = "bind")## a b c id d e## 1 1 a 5 1 <NA> NA## 2 2 b 6 2 <NA> NA## 3 3 c 7 3 <NA> NA## 4 NA <NA> 6 2 f 100## 5 NA <NA> 7 3 g 101## 6 NA <NA> 8 4 h 102# 简单来说,将x数据框中与y数据框c列有共同元素的行提取出来data_merge(x, y, join = "semi", by = "c")## a b c id## 2 2 b 6 2## 3 3 c 7 3# 反之,这个是将x数据框中与y数据框c列没有共同元素的行提取出来data_merge(x, y, join = "anti", by = "c")## a b c id## 1 1 a 5 1
数据重塑
长宽数据的转换
wide_data <- data.frame(replicate(5, rnorm(10)))head(data_to_long(wide_data))# name value# 1 X1 0.42465528# 2 X2 0.13473229# 3 X3 2.26852458# 4 X4 1.06321951# 5 X5 -0.04557565# 6 X1 -0.01311497
数据类型的转换
在生信的研究中,我们会使用不同的统计学方法,有时不同的方法对数据的分布有不同的要求,datawizard包提供了数据转换的函数以达到一键转换的效果。以下是小果列举的两个例子。
df <- data.frame(a = c(-2,-1,0,1,2),b = c(3,4,5,6,7))df## a b## 1 -2 3## 2 -1 4## 3 0 5## 4 1 6## 5 2 7nor_df <- normalize(df)nor_df## a b## 1 0.00 0.00## 2 0.25 0.25## 3 0.50 0.50## 4 0.75 0.75## 5 1.00 1.00stand_df <- standardize(df)stand_df## a b## 1 -1.2649111 -1.2649111## 2 -0.6324555 -0.6324555## 3 0.0000000 0.0000000## 4 0.6324555 0.6324555## 5 1.2649111 1.2649111
除此之外,Winsorize,Center,Ranktransform,Rotate or transpose等处理方法,有兴趣的小伙伴可以自行研究一下哦!
数据属性
除了数据处理之外,datawizard包还有一个功能,那就是对数据进行统计,为数据框中的所有变量提供全面的描述性摘要的方法。
# Variable | Mean | SD | IQR | Range | Skewness | Kurtosis | n | n_Missing# --------------------------------------------------------------------------------------------# mpg | 20.09 | 6.03 | 7.53 | [10.40, 33.90] | 0.67 | -0.02 | 32 | 0# cyl | 6.19 | 1.79 | 4.00 | [4.00, 8.00] | -0.19 | -1.76 | 32 | 0# disp | 230.72 | 123.94 | 221.53 | [71.10, 472.00] | 0.42 | -1.07 | 32 | 0# hp | 146.69 | 68.56 | 84.50 | [52.00, 335.00] | 0.80 | 0.28 | 32 | 0# drat | 3.60 | 0.53 | 0.84 | [2.76, 4.93] | 0.29 | -0.45 | 32 | 0# wt | 3.22 | 0.98 | 1.19 | [1.51, 5.42] | 0.47 | 0.42 | 32 | 0# qsec | 17.85 | 1.79 | 2.02 | [14.50, 22.90] | 0.41 | 0.86 | 32 | 0# vs | 0.44 | 0.50 | 1.00 | [0.00, 1.00] | 0.26 | -2.06 | 32 | 0# am | 0.41 | 0.50 | 1.00 | [0.00, 1.00] | 0.40 | -1.97 | 32 | 0# gear | 3.69 | 0.74 | 1.00 | [3.00, 5.00] | 0.58 | -0.90 | 32 | 0# carb | 2.81 | 1.62 | 2.00 | [1.00, 8.00] | 1.16 | 2.02 | 32 | 0
包括了均值、离散度、范围、偏度、峰度等度量。
那么今天小果的分享就到这里啦!希望今天小果的分享帮助到各位小伙伴在数据处理方向更进一步!
如果小伙伴有其他数据分析需求,可以尝试使用本公司新开发的生信分析小工具云平台,零代码完成分析,非常方便噢
云平台网址为:(http://www.biocloudservice.com/home.html)

(点击阅读原文跳转)
 点一下阅读原文了解更多资讯
 点一下阅读原文了解更多资讯

