。有条件地删除重复项

时间:2019-11-19 12:34:21

标签: r duplicates

我有以下数据集:

ID Visite 200 other Variables 
1  1
1  2
1  4
1  4
1  5
1  6
2  1
2  2
2  3
2  4
2  4
2  6
2  7
3  1
3  2
3  2
3  3
3  4
3  5
4  1
4  2
4  3
  1. 我想看看在Visite中哪些ID包含重复项(此处:1:2x4; 2:2x4; 3:2x3)
  2. 例如,我想将重复项更改为较低的Visite。 ID为1的访问者4或缺少较低访问者的访问者,例如,在ID为2的访问者5或更高的访问项缺失的情况下,或者删​​除一个完整的行,包括一个人的所有其他值(如果有重复项但没有相邻的访问项缺失)。

能帮我吗?我尝试了一些代码,但没有任何效果。

谢谢。 最好 克里斯蒂娜(Christina)

1 个答案:

答案 0 :(得分:0)

您可以尝试使用过滤重复项

library(tidyverse)
df %>%
  group_by(ID) %>% 
  filter(Visite %in% Visite[duplicated(Visite)])
# A tibble: 6 x 2
# Groups:   ID [3]
     ID Visite
  <int>  <int>
1     1      4
2     1      4
3     2      4
4     2      4
5     3      2
6     3      2

并使用更改重复项之一

df %>%
  # add ID =5 with no adjacent visit
  bind_rows(tibble(ID = c(5,5,5), Visite=c(1,2,2))) %>% 
  group_by(ID) %>% 
  filter(!(duplicated(Visite) & last(duplicated(Visite)))) %>% 
  mutate(Vistite2 = 1:n()) %>% 
  as.data.frame()
   ID Visite
1   1      1
2   1      2
3   1      4
4   1      4
5   1      5
6   1      6
7   2      1
8   2      2
9   2      3
10  2      4
11  2      4
12  2      6
13  2      7
14  3      1
15  3      2
16  3      2
17  3      3
18  3      4
19  3      5
20  4      1
21  4      2
22  4      3
23  5      1
24  5      2