r - 在第二列中具有两个不同值的重复 id
问题描述
我正在处理一个如下所示的数据集
id ColA ColB
1 No Red
1 Yes Red
2 No Blue
3 No Blue
3 No Blue
4 No Red
4 Yes Red
我喜欢替换 ColA 中的值
- ID is duplicate { 1,3,4..}
- ColB values are the same (id 1, Red,Red) but
- ColA values are different(id1, yes, no)
如果上述情况属实,则应将 ColA 替换为 Yes。
最终数据集应如下所示
Id ColA ColB
1 Yes Red
1 Yes Red
2 No Blue
3 No Blue
3 No Blue
4 Yes Red
4 Yes Red
非常感谢任何建议或指示。
解决方案
这是一个解决方案data.table
:
library("data.table")
DT <- fread(
" id ColA ColB
1 No Red
1 Yes Red
2 No Blue
3 No Blue
3 No Blue
4 No Red
4 Yes Red")
DT[, ColA:=ifelse(uniqueN(ColB)==1 && uniqueN(ColA)==2, "Yes", ColA) , by=id][]
# > DT[, ColA:=ifelse(uniqueN(ColB)==1 && uniqueN(ColA)==2, "Yes", ColA) , by=id][]
# id ColA ColB
# 1: 1 Yes Red
# 2: 1 Yes Red
# 3: 2 No Blue
# 4: 3 No Blue
# 5: 3 No Blue
# 6: 4 Yes Red
# 7: 4 Yes Red
没有的变体ifelse()
:
DT[, ColA := if (uniqueN(ColB)==1 && uniqueN(ColA)==2) "Yes", by=id][]
# > DT[, ColA := if (uniqueN(ColB)==1 && uniqueN(ColA)==2) "Yes", by=id][]
# id ColA ColB
# 1: 1 Yes Red
# 2: 1 Yes Red
# 3: 2 No Blue
# 4: 3 No Blue
# 5: 3 No Blue
# 6: 4 Yes Red
# 7: 4 Yes Red
推荐阅读
- mysql - Mysql加入三张表并分组
- javascript - 如何通过将鼠标悬停在树下方的元素上来隐藏树上方的元素
- mongodb - Mongo 自定义配置未连接到 Mongo 实例
- chef-infra - 将 inspec 配置文件上传到 Chef Automate 时出现 Inspec 4.16.0 问题
- angular - 在 Angular 中导入数据
- python - 如何使用 Python 以编程方式将行添加到现有 Excel 表
- python-3.x - 为 twitter 注册 webhook 的程序是什么?
- angular - 无法使用“选定”值预设选择 - 角度引导程序
- python - 由于换行,在 Python 中运行 Bash 命令导致不正确的结果
- ocaml - 如何通过 Esy 安装像 4.08.0+fp+flambda 这样的 OCaml 变体?