我一直在努力解决this issue中提出的问题,但没有成功。这不仅包括过滤在组中重复的项目,而且还考虑了与 dplyr (我更喜欢dplyr而不是base或data.table )进行比较的原始项目。
我尝试的解决方案如下:
> a <- data.frame(name=c("a","b","b","b","a","a"),position=c(1,2,1,2,2,2),achieved=c(1,0,0,0,1,0))
> a %>% group_by(name,achieved) %>% mutate(duplicated=duplicated(position))
# A tibble: 6 x 4
# Groups: name, achieved [3]
name position achieved duplicated
<fct> <dbl> <dbl> <lgl>
1 a 1 1 FALSE
2 b 2 0 FALSE
3 b 1 0 FALSE
4 b 2 0 TRUE
5 a 2 1 FALSE
6 a 2 0 FALSE
我知道此解决方案与我想要的解决方案很接近,但是它只为我带来了在第一个重复后的值。,但我还希望一种dplyr解决方案给我每个组所有重复的值,所以这可能有助于我提高对dplyr的理解。
所需的输出如下:
# A tibble: 6 x 4
# Groups: name, achieved [3]
name position achieved duplicated
<fct> <dbl> <dbl> <lgl>
1 a 1 1 FALSE
2 b 2 0 TRUE
3 b 1 0 FALSE
4 b 2 0 TRUE
5 a 2 1 FALSE
6 a 2 0 FALSE
谢谢。
答案 0 :(得分:2)
尝试一下:
a %>%
group_by_all() %>%
mutate(duplicated = n() > 1)
答案 1 :(得分:2)
您似乎想按名称,职位和来访者进行分组,然后查看该组中是否有多个记录
a %>% group_by(name,achieved, position) %>% mutate(duplicated = n()>1)
# name position achieved duplicated
# <fct> <dbl> <dbl> <lgl>
# 1 a 1 1 FALSE
# 2 b 2 0 TRUE
# 3 b 1 0 FALSE
# 4 b 2 0 TRUE
# 5 a 2 1 FALSE
# 6 a 2 0 FALSE