前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言基于dplyr实现数据快捷操作

R语言基于dplyr实现数据快捷操作

作者头像
一粒沙
发布2020-12-14 11:05:07
1.5K0
发布2020-12-14 11:05:07
举报
文章被收录于专栏:R语言交流中心
R语言在处理大数据方面一直是被人诟病的地方,那么有人就为R语言打造了一个dplyr包可以实现高效的数据预处理,减少内存的消耗,提升处理效率。今天就给大家详细看下这个包的具体功能。首先看下包的安装:
代码语言:javascript
复制
install.packages("dplyr")

接下来我们看下具体的功能:

1. as_tibble 将大的数据转化为友好展示的格式。实例:

代码语言:javascript
复制
library(dplyr)
mtcars <- as_tibble(mtcars)

2. arrange 对数据集进行整体基于单列或者多列进行排序。实例

代码语言:javascript
复制
##升序
mtcars %>% arrange(cyl, disp)
代码语言:javascript
复制
###降序
mtcars %>% arrange(desc(cyl),desc(disp))

3. distinct 去除重复的行。实例:

代码语言:javascript
复制
df <- tibble(
  x =sample(10, 100, rep = TRUE),
  y =sample(10, 100, rep = TRUE)
)
df %>% distinct(x, .keep_all = TRUE) #whole data frame

4. filter 匹配对应行的数据。并生成结果。等同于subset函数。实例:

代码语言:javascript
复制
starwars %>% filter(hair_color =="none" & eye_color == "black")

5. mutate 为数据集增加新的变量。实例:

代码语言:javascript
复制
df %>% mutate(z = x + y, z2 = z ^ 2)

6. pull 输出单个变量。

7. relocate改变列之间排序。实例:

8. rename重新命名某一个变量。实例:

代码语言:javascript
复制
iris <- as_tibble(iris)
iris %>% rename(sepal_length =Sepal.Length, sepal_width = 2)

9. rename_with 对列名进行操作。实例:

代码语言:javascript
复制
iris %>% rename_with(toupper)

10. select 选择要输出的变量。可以直接填入变量名,也可以直接用列号,或者更深一层添加功能函数:start_with(以什么开头的变量),where(什么要求的变量)实例:

代码语言:javascript
复制
iris %>%select(starts_with("Petal"))##以Petal开头的变量
iris %>% select(where(is.factor)) ##属性为因子的变量。

11. summarise 汇总变量的属性,并进行统计输出。实例:

代码语言:javascript
复制
mtcars %>%
 group_by(cyl) %>%
 summarise(mean = mean(disp), n = n())

12. group_by基于单个或者多个变量进行分组。

13. n() 指的是统计行数

14. slice 选择输出的行。实例:

15. nest_by隐掉某个变量后面的数据,赋值给data,只展示大小。实例:

代码语言:javascript
复制
mtcars %>% nest_by(cyl)
代码语言:javascript
复制
##高级的模型构建
by_cyl <- mtcars %>% nest_by(cyl)
mods <- by_cyl %>% mutate(mod =list(lm(mpg ~ wt, data = data)))
mods <- mods %>% mutate(pred =list(predict(mod, data)))
mods

16. across 针对某一列进行操作,两个参数:第一个为列名,第二个为操作函数。实例:

代码语言:javascript
复制
starwars %>%
 summarise(across(where(is.character), ~ length(unique(.x))))
代码语言:javascript
复制
###高级复杂应用:
starwars %>%
 group_by(species) %>%
 filter(n() > 1) %>%
 summarise(across(c(sex, gender, homeworld), ~ length(unique(.x))))

17. 多个表之间的操作:

最后我们看下更高级的应用实例:

代码语言:javascript
复制
###自定义函数在通道中的应用
var_summary <- function(data, var) {
 data %>%
   summarise(n = n(), min = min({{ var }}), max = max({{ var }}))
}
mtcars %>%
 group_by(cyl) %>%
 var_summary(mpg)
代码语言:javascript
复制
###shiny交互的操作
library(shiny)
ui <- fluidPage(
 selectInput("var", "Variable", choices = names(mtcars)),
 tableOutput("output")
)
server <- function(input, output,session) {
 data <- reactive(filter(mtcars, .data[[input$var]] > 0))
 output$output <- renderTable(head(data()))
}
shinyApp(ui, server)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言交流中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档