代码语言: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)