R语言dplyr、tidyr使用笔记
来源:互联网 发布:手机里js文件怎么打开 编辑:程序博客网 时间:2024/06/03 21:31
目录
- dplyr包
- 1 展现数据 tbl_df
- 2 筛选数据 filter
- 3 排列数据 arrange
- 4 选择子集 select
- 5 变形 mutate
- 6 总览数据 summarise
- 7 数据分组 group_by
- tidyr包
- 1 宽转长 gather
- 2 长转宽 spread
- 3 合并 unit
- 4 拆分 separate
1 dplyr包
1.1 展现数据 tbl_df()
:
函数tbl_df()
使得大数据集规范显示出来,行列都只显示10个,跟head差不多,但是head只能控制行,无法控制列,使用tbl_df()
就是为了防止数据刷屏。
> mtcars_df <- tbl_df(mtcars)> mtcars_df# A tibble: 32 × 11 mpg cyl disp hp drat wt qsec vs am gear carb* <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 42 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 43 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 14 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 15 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 26 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 17 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 48 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 29 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 210 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4# ... with 22 more rows
1.2 筛选数据 filter()
:
按给定的逻辑判断筛选出符合要求的子数据集
> filter(mtcars_df, mpg == 21, cyl == 6)# A tibble: 2 × 11 mpg cyl disp hp drat wt qsec vs am gear carb <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>1 21 6 160 110 3.9 2.620 16.46 0 1 4 42 21 6 160 110 3.9 2.875 17.02 0 1 4 4
1.3 排列数据 arrange()
:
按给定的列名依次对行进行排序
# 先对cyl列正序排列,再对carb列倒序排列> print(arrange(mtcars_df, cyl, desc(carb))) mpg cyl disp hp drat wt qsec vs am gear carb1 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 22 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 23 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 24 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 25 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 26 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 27 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 18 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 19 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 110 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 111 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 112 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 613 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 414 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 415 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 416 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 417 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 118 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 119 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 820 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 421 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 422 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 423 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 424 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 425 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 426 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 327 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 328 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 329 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 230 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 231 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 232 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
1.4 选择子集 select()
:
用列名作参数来选择子数据集
> select(mtcars_df, mpg, disp:wt, carb) # disp:wt表示从disp列选到wt列# A tibble: 32 × 6 mpg disp hp drat wt carb* <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>1 21.0 160.0 110 3.90 2.620 42 21.0 160.0 110 3.90 2.875 43 22.8 108.0 93 3.85 2.320 14 21.4 258.0 110 3.08 3.215 15 18.7 360.0 175 3.15 3.440 26 18.1 225.0 105 2.76 3.460 17 14.3 360.0 245 3.21 3.570 48 24.4 146.7 62 3.69 3.190 29 22.8 140.8 95 3.92 3.150 210 19.2 167.6 123 3.92 3.440 4# ... with 22 more rows
1.5 变形 mutate()
:
对已有列进行数据运算并添加为新列
> mutate(mtcars_df, NO = 1:dim(mtcars_df)[1], res = hp - drat) # A tibble: 32 × 13 mpg cyl disp hp drat wt qsec vs am gear carb NO res <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl>1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 1 106.102 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 2 106.103 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 3 89.154 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 4 106.925 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 5 171.856 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 6 102.247 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 7 241.798 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 8 58.319 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 9 91.0810 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 10 119.08# ... with 22 more rows
1.6 总览数据 summarise()
:
对数据框调用其它函数进行汇总操作, 返回一维的结果
> summarise(mtcars_df, mdisp = mean(disp, na.rm = TRUE), mhp = mean(hp, na.rm = TRUE))# A tibble: 1 × 2 mdisp mhp <dbl> <dbl>1 230.7219 146.6875
1.7 数据分组 group_by()
:
当对数据集通过group_by()添加了分组信息后,mutate(),arrange() 和 summarise() 函数会自动对这些 tbl 类数据执行分组操作。
> cars <- group_by(mtcars_df, cyl)> (countcars <- summarise(cars, count = n())) # count = n()用来计算次数# A tibble: 3 × 2 cyl count <dbl> <int>1 4 112 6 73 8 14
2 tidyr包
2.1 宽转长 gather()
:
使用gather()函数实现宽表转长表,语法如下:
# gather(data, key, value, …, na.rm = FALSE, convert = FALSE)# data:需要被转换的宽形表# key:将原数据框中的所有列赋给一个新变量key# value:将原数据框中的所有值赋给一个新变量value# …:可以指定哪些列聚到同一列中# na.rm:是否删除缺失值> (longdata <- gather(mtcars_df, attribute, value, -mpg))# A tibble: 320 × 3 mpg attribute value <dbl> <chr> <dbl>1 21.0 cyl 62 21.0 cyl 63 22.8 cyl 44 21.4 cyl 65 18.7 cyl 86 18.1 cyl 67 14.3 cyl 88 24.4 cyl 49 22.8 cyl 410 19.2 cyl 6# ... with 310 more rows> (longdata <- gather(mtcars_df, attribute, value))# A tibble: 352 × 2 attribute value <chr> <dbl>1 mpg 21.02 mpg 21.03 mpg 22.84 mpg 21.45 mpg 18.76 mpg 18.17 mpg 14.38 mpg 24.49 mpg 22.810 mpg 19.2# ... with 342 more rows> (longdata <- gather(mtcars_df, attribute, value, mpg, carb))# A tibble: 64 × 11 cyl disp hp drat wt qsec vs am gear attribute value <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>1 6 160.0 110 3.90 2.620 16.46 0 1 4 mpg 21.02 6 160.0 110 3.90 2.875 17.02 0 1 4 mpg 21.03 4 108.0 93 3.85 2.320 18.61 1 1 4 mpg 22.84 6 258.0 110 3.08 3.215 19.44 1 0 3 mpg 21.45 8 360.0 175 3.15 3.440 17.02 0 0 3 mpg 18.76 6 225.0 105 2.76 3.460 20.22 1 0 3 mpg 18.17 8 360.0 245 3.21 3.570 15.84 0 0 3 mpg 14.38 4 146.7 62 3.69 3.190 20.00 1 0 4 mpg 24.49 4 140.8 95 3.92 3.150 22.90 1 0 4 mpg 22.810 6 167.6 123 3.92 3.440 18.30 1 0 4 mpg 19.2# ... with 54 more rows
2.2 长转宽 spread()
:
有时,为了满足建模或绘图的要求,往往需要将长形表转换为宽形表,或将宽形表变为长形表。如何实现这两种数据表类型的转换。使用spread()函数实现长表转宽表,语法如下:
# spread(data, key, value, fill = NA, convert = FALSE, drop = TRUE)# data:为需要转换的长形表# key:需要将变量值拓展为字段的变量# value:需要分散的值# fill:对于缺失值,可将fill的值赋值给被转型后的缺失值> spread(longdata, attribute, value)# A tibble: 32 × 11 cyl disp hp drat wt qsec vs am gear carb mpg* <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>1 4 71.1 65 4.22 1.835 19.90 1 1 4 1 33.92 4 75.7 52 4.93 1.615 18.52 1 1 4 2 30.43 4 78.7 66 4.08 2.200 19.47 1 1 4 1 32.44 4 79.0 66 4.08 1.935 18.90 1 1 4 1 27.35 4 95.1 113 3.77 1.513 16.90 1 1 5 2 30.46 4 108.0 93 3.85 2.320 18.61 1 1 4 1 22.87 4 120.1 97 3.70 2.465 20.01 1 0 3 1 21.58 4 120.3 91 4.43 2.140 16.70 0 1 5 2 26.09 4 121.0 109 4.11 2.780 18.60 1 1 4 2 21.410 4 140.8 95 3.92 3.150 22.90 1 0 4 2 22.8# ... with 22 more rows
2.3 合并 unit()
:
unite的调用格式如下
# unite(data, col, …, sep = “_”, remove = TRUE)# data:为数据框# col:被组合的新列名称# …:指定哪些列需要被组合# sep:组合列之间的连接符,默认为下划线# remove:是否删除被组合的列> TIMES <- data.frame(years = c('1990', '1991', '1992'), months = c(2,3,4), day = c(1, 2, 3))> (TIMESunite <- unite(TIMES, information, months, day, sep= "-")) years information1 1990 2-12 1991 3-23 1992 4-3
2.4 拆分 separate()
:
separate()函数可将一列拆分为多列,一般可用于日志数据或日期时间型数据的拆分,语法如下
# separate(data, col, into, sep = “[^[:alnum:]]+”, remove = TRUE,# convert = FALSE, extra = “warn”, fill = “warn”, …)# data:为数据框# col:需要被拆分的列# into:新建的列名,为字符串向量# sep:被拆分列的分隔符# remove:是否删除被分割的列> (TIMESsep <- separate(TIMESunite, information, c("months", "day"), sep = "-")) years months day1 1990 2 12 1991 3 23 1992 4 3
0 0
- R语言dplyr、tidyr使用笔记
- R语言数据处理包dplyr、tidyr笔记
- R语言数据处理包dplyr、tidyr笔记
- R语言中的数据处理包dplyr、tidyr笔记
- R语言扩展包dplyr笔记
- R语言扩展包dplyr笔记
- 【转载】R语言扩展包dplyr笔记
- R语言扩展包dplyr笔记
- R语言扩展包dplyr笔记
- R语言扩展包dplyr笔记
- R语言dplyr简介
- R语言-dplyr
- R语言<dplyr>
- R第五问 R语言扩展包dplyr笔记
- 使用R语言的dplyr包进行数据预处理
- R语言 dplyr传递参数
- R语言-数据处理包 dplyr
- R语言-数据处理包 dplyr
- python破解zip密码
- OpenDaylight Boron-SR2版本简单应用及流表操作指南
- Uva-1608 Non-boring sequences(高效率算法)
- poj 2115 求满足同余方程的最小整数解
- 理解迪杰斯特拉算法
- R语言dplyr、tidyr使用笔记
- Android控件TextView显示html文件中的图片
- [置顶]Android Studio 初体验
- 参看caffe中三通道彩色图像的卷积过程
- 友元(friend)
- JZOJ 4.8 2435——校门外的树【树状数组】
- Path Sum and Delete Node in a Linked List
- Cell系列的update机制与个性化使用
- 浅谈数组(二)