用 dplyr 包中的 select() 对数据框做选择列、排序列、重命名列。
一. 用列名选择列
starwars
可以用“:”选择连续的若干列:
starwars
tidyverse 包提供了一些助手函数,帮助选择变量,常用的有:
更多信息查看 ?tidyselect::select_helpers.
iris
iris
iris
根据正则表达式匹配选择列:
msleep
二. 根据条件选择列
用 select_if() 可以根据条件(逻辑判断)选择列,例如选择所有数值型的列:
starwars
也可以使用,能够检验某条件并返回 TURE 或 FALSE 的自定义函数:
less_than_500
实现上述选择,更简单的做法是用“~”表示的匿名函数:
iris
结合 n_distinct() 选择唯一值数目满足某条件的列:
msleep
三. 对列排序
列是根据被选择的顺序排列。
iris %>%
select(ends_with("Length"), Species, ends_with("Width"))
everything() 选择器返回未被选择的所有列,这在对数据框的列做排序时很有用:
iris %>%
select(Species, everything())
四. 删除列
用“-”删除列。
iris %>%
select(-Species, -Petal.Length)
iris %>%
select(-ends_with("Length"))
iris %>%
select(Species, everything(), -ends_with("Length"))
注意: -ends_with(...) 要放在 everything() 后面,否则删除的列就全回来了。
五. 重命名列
iris
iris
注:也可以用 janitor 包中的 clean_names() 自动修正列名。
参考文献:
- Desi Quintans, Jeff Powell. Working in the Tidyverse. http://www.hiercourse.com/
- Garrett Grolemund, Hadley Wickham. R for Data Science. https://r4ds.had.co.nz/
————————————————
转载请注明,禁止用于出版。