模块课程(1/2)
过滤和选择数据
Tidyverse 是专为数据科学设计的 R 包的集合,它们具有共同的哲学、语法和数据结构。该套件中用于数据操作的核心包称为 dplyr。
dplyr 引入了一组函数(“动词”),使数据框操作变得非常直观。
管道运算符(%>% 或 |>)
Tidyverse 理念的核心是将操作链接在一起。管道运算符 %>% (或 R 4.1+ 中引入的本机管道 |>)获取一个表达式的结果并将其作为第一个参数传递给下一个函数。这可以避免嵌套函数调用,并防止临时变量使工作区变得混乱。
# Without pipe:
filter(select(df, name, age), age > 20)
# With pipe:
df %>%
select(name, age) %>%
filter(age > 20)用于过滤和选择的 dplyr 动词
从数据框中提取数据的三个基本动词是:
1.select()
从数据框中选择特定列。您可以列出要保留的列名称或使用 - 前缀来排除列。
# Select the 'name' and 'salary' columns
select(df, name, salary)
# Remove the 'address' column
select(df, -address)2.filter()
根据一个或多个逻辑条件过滤行。
# Filter rows where age is greater than 30
filter(df, age > 30)
# Filter using multiple conditions (logical AND)
filter(df, age > 30, department == "HR")3.arrange()
根据一列或多列的值对行进行排序。默认情况下排序顺序为升序。要按降序排序,请将列名括在 desc() 中。
# Sort by age (ascending)
arrange(df, age)
# Sort by salary (descending)
arrange(df, desc(salary))自己尝试一下
练习 1:选择列
给定数据框 df,使用 select() 选择姓名和年龄列并将结果保存在 df_selected 中。
显示提示
美国:df_selected <- select(df, 姓名, 年龄)
3 次尝试后可用的解决方案
过滤数据框 df 中年龄列严格大于 18 的行,将结果保存在 df_adults 中。
显示提示
使用filter(df,age > 18)函数并将结果分配给df_adults。
3 次尝试后可用的解决方案
使用管道运算符 %>% 来链接操作:首先过滤 df 只保留age > 18 的记录,然后选择 name 列。将结果保存到 res.
显示提示
Scrivi: res <- df %>% 过滤器(年龄 > 18) %>% 选择(姓名)
3 次尝试后可用的解决方案
使用排列() 和 desc() 根据工资列按降序对数据框 df 的行进行排序。将结果保存在 df_sorted 中。
显示提示
美国安排(desc(薪水))所有内部的管道都直接进入。
3 次尝试后可用的解决方案
在df上写一个完整的管道:过滤department等于'IT'的记录,选择列name和salary,并按salary(升序)对结果进行排序。将最终结果保存到 res 中。
显示提示
使用管道%>% 来链接filter(department == 'IT')、select(name, salary) 和arrange(salary)。
3 次尝试后可用的解决方案