首页 > 解决方案 > 根据 R 中数据值的等级或顺序对行进行汇总和分组

问题描述

我的数据如下所示:

员工ID 单元 城市 状态 DATA_RANK
221 史密斯 吉尔 X1 达拉斯 德克萨斯州 2
221 史密斯-吴 吉尔 德克萨斯州 1
331 德文 玛丽 X2 休斯顿 2
331 玛丽 休斯顿 德克萨斯州 1
441 天鹅 安娜贝尔 X2 奥本 加州 1
441 安娜 X3 奥本 2

我试图让输出看起来像这样(按 EMPLOYEE_ID 分组行),并且还选择具有重复员工 ID 的 data_rank = 1 的行。

员工ID 单元 城市 状态 DATA_RANK
221 史密斯-吴 吉尔 德克萨斯州 1
331 玛丽 休斯顿 德克萨斯州 1
441 天鹅 安娜贝尔 X2 奥本 加州 1

我尝试使用以下代码:

 data <- data %>%
 group_by(EMPLOYEE_ID, substr(LAST_NAME,0,4), substr(FIRST_NAME,0,3)) %>%
 mutate_at(vars(-group_cols()),funs(na.locf(., na.rm = FALSE, fromLast = FALSE))) %>%
 filter(row_number()==n())

但这并不能让我来到这里。有什么想法吗?谢谢!

标签: rgroup-by

解决方案


你有使用的理由substr()吗?

我相信这段代码应该可以工作。

data %>%
  group_by(EMPLOYEE_ID) %>%
  filter(DATA_RANK == 1)

推荐阅读