r - R -- 为 group_by 中的任何重复值添加值
问题描述
我正在尝试识别数据框中 group_by 中的重复值,并将这些重复值变异到新列中。示例表如下所示:
ID | 价值 |
---|---|
1 | 约翰 |
1 | 麦克风 |
2 | 杰斯 |
2 | 阿隆 |
2 | 杰斯 |
3 | 卡尔 |
3 | 卡尔 |
3 | 约翰 |
我希望输出为:
ID | 价值 | 骗子 |
---|---|---|
1 | 约翰 | |
1 | 麦克风 | |
2 | 杰斯 | 杰斯 |
2 | 阿隆 | |
2 | 杰斯 | 杰斯 |
3 | 卡尔 | 卡尔 |
3 | 卡尔 | 卡尔 |
3 | 约翰 |
我以前用过这个df_new <- df %>% group_by(id) %>% mutate(dupes = ifelse(n_distinct(Value)>1 ,Value,""))
但不确定如何修改它以提供所需的输出,也许使用any()
连同case_when()
函数?
解决方案
使用 withlength()
函数而不是n()
. 逻辑和数据来自 akrun(非常感谢)!
library(dplyr)
df1 %>%
group_by(id, Value) %>%
mutate(dupes = ifelse(length(Value) > 1 , Value, '')) %>%
ungroup
输出:
id Value dupes
<int> <chr> <chr>
1 1 john ""
2 1 mike ""
3 2 jess "jess"
4 2 aron ""
5 2 jess "jess"
6 3 carl "carl"
7 3 carl "carl"
8 3 john ""
推荐阅读
- javascript - 更改包含标签 + 输入的 div 的颜色,当复选框未选中时 - 没有 JS?
- python - 将路径解析为python脚本中的参数
- android - CoordinatorLayout定位
- vhdl - 如何在 vhdl 中重置序列识别自动机中的变量?
- java - 如何在java中的数组中获取某些字符串值
- mysql - 从具有不同键值的mysql中选择
- wix - MSI 安装程序中的 ADDLOCAL=FEATURE1 删除其他 FEATURES
- django - 更改 Django 用户列表显示
- google-streetview-publish - STATUS:INVALID_ARGUMENT and ERROR: The API Key and the authentication credential are from different projects
- templates - 自定义模板 Prestashop