R语言学习-dplyr包

2019-12-10  本文已影响0人  米粥的味道

不成系统学习的好处,是会根据所需要的通过检索一个个解决问题,但耽误的时间不一定少;系统学习的缺点就是一开始可能会无聊的坚持不下去。在处理数据时,觉得头疼的数据,其实dplyr包就可以简洁的解决掉,太赞了。

来源于:dplyr 包的强大之处R语言必学包之dplyr包
主要函数

-select、rename、filter、mutate, transmute、group_by、summarize

选择
select函数
#选取变量名中包含etal的列  
select(iris, contains("etal")) 
#正则表达式匹配,返回变量名中包含ta的列  
select(iris, matches(".ta."))  
rename函数

这里需要注意的是, 我们使用 select 函数则在结果中只会保留选择的列.
如果我们只是需要对特定列进行重命名, 而需要保留原来其他的列, 则可以使用 rename 函数.
iris %>% rename(sp.name = Species)
rename(iris,sp.name = Species)

筛选: filter() 和slice()函数

可以按给定的逻辑条件筛选出符合要求的子数据集;

#过滤出cyl == 8的行  
filter(mtcars, cyl == 8)  
filter(mtcars, cyl < 6)  
#过滤出cyl < 6 并且 vs == 1的行  
filter(mtcars, cyl < 6 & vs == 1)  
filter(mtcars, cyl < 6, vs == 1)  
#过滤出cyl < 6 或者 vs == 1的行  
filter(mtcars, cyl < 6 | vs == 1)  
#过滤出cyl 为4或6的行  
filter(mtcars, cyl %in% c(4, 6))  
#选取第一行数据  
slice(mtcars, 1L)  
filter(mtcars, row_number() == 1L)  
#选取最后一行数据  
slice(mtcars, n())  
filter(mtcars, row_number() == n())  
#选取第5行到最后一行所有数据  
slice(mtcars, 5:n())  
filter(mtcars, between(row_number(), 5, n()))  
改变列值

mutate 函数会保留修改后的列和修改之前的列,
transmute 函数则会保留修改后的列而丢弃修改之前的列

分割-应用-整合

可以使用 group_by 和 summarize 函数来获得iris每个物种的每一种属性的均值

排序

arrange 函数对数据进行从小到大排序.
desc 函数可以实现从大到小排序

#以cyl和disp联合升序排序
arrange(mtcars, cyl, disp)
#以disp降序排序
arrange(mtcars, desc(disp))
去重: distinct

distinct()用于对输入的tbl进行去重,返回无重复的行

df <- data.frame(
  x = sample(10, 100, rep = TRUE),
  y = sample(10, 100, rep = TRUE)
)
#以全部两个变量去重,返回去重后的行数
nrow(distinct(df))
nrow(distinct(df, x, y))
#以变量x去重,只返回去重后的x值
distinct(df, x)
#以变量y去重,只返回去重后的y值
distinct(df, y)
#以变量x去重,返回所有变量
distinct(df, x, .keep_all = TRUE)
#以变量y去重,返回所有变量
distinct(df, y, .keep_all = TRUE)
#对变量运算后的结果去重
distinct(df, diff = abs(x - y))

待补充dplyr包后续学习:R语言必学包之dplyr包

大佬新作dtplyr:当优秀的语法遇上牛批的速度

上一篇下一篇

猜你喜欢

热点阅读