r - 根据 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())
但这并不能让我来到这里。有什么想法吗?谢谢!
解决方案
你有使用的理由substr()
吗?
我相信这段代码应该可以工作。
data %>%
group_by(EMPLOYEE_ID) %>%
filter(DATA_RANK == 1)
推荐阅读
- oracle - 尝试使用 LINQPad 连接到 Oracle 时出现“无法获取 Oracle 客户端信息”
- c# - C# 和 Google 表格:离线模式
- karate - 如何在空手道 API 自动化项目中集成 Allure Report
- r - 将“整体”组添加到 facet_wrap (ggplot2)
- c - 按位与的结果似乎为 0,但不是
- excel - 使用 VBA 过滤多个组合
- mysql - Aws Rds 全局事件调度程序为超级管理员引发身份验证错误
- azure - 为什么 Azure SignalR 服务不提供诊断或日志?
- python - to_csv() 写入带有附加分数的值
- ruby - 从 ruby cucumber 输出 junit 时处理易碎测试(重试中断管道)