Yulong Niu

个人博客

tidyverse使用集锦

Posted at — Nov 26, 2018

1. 使用dplyr包的好处

  1. 大多数时间在操作tbl_df对象,而不是data.frame(特别是含有factordata.frame)。

  2. 与magrittr包的管道更好地结合。

  3. 更丰富的列操作,例如mutateselectgroup_by会节省很多for循环。

2. 列操作

2.1 基本函数

xor(x, y):x和y并集除去交集的部分。

between(x, left, right):left <= x <= right。

near(x, y):x和y在一定精度下相等,比==安全)。直接使用列名操作,例如year == 2018。多列操作相当于&

filter()group操作影响。

返回一个空的表格,只保留列名,filter(x, FALSE)

多列操作时,先排序第一个,再对第一个相等的排第二个。

desc()降序排列。.by_group = FALSE控制是否需要按照group进行组内操作。

重复行计数:

dat %>%
  group_by_all() %>%
  count()

2.2 列操作和列选择

filter()arrange()mutate()select()transmute()rename()summerise()

## 选择全部
dat %>%
  mutate(across(everything(), mean))

## 条件选择
dat %>%
  mutate(across(where(is.numeric), ~ mean(.x, na.rm = TRUE)))

## 位置选择
dat %>%
  mutate(across(c(col1, start_with("prefix")), ~ mean(.x, na.rm = TRUE)))

## 混合选择
dat %>%
  mutate(across(where(is.character) & start_with("prefix"), ~ mean(.x, na.rm = TRUE)))

across()参数中的.fns操作匿名函数,.x表示对应列。

3. 行操作

4. 两个表的操作

5. 行名操作

参考资料

更新记录

2023年02月16日