根据下一列中的特定值选择多个重复行

时间:2016-09-30 17:51:32

标签: r duplicates unique

这是Kikapp answer的后续问题。

我想删除缺少所有时间点的参与者ID。换句话说,我想选择具有所有四个时间的行(11,21,31,41)。请参阅示例数据dropbox link

这是基于Kikapp答案的尝试。出于某种原因,它不起作用。让我知道如何让它变得更好。

data2 <- df[df$ID %in% names(table(df$ID))[table(df$ID) > 3],] 

我为time == 11time == 21time == 41获得了4695行或对象或ID,而time == 31则为4693;但是,我希望他们应该是平等的。

1 个答案:

答案 0 :(得分:1)

您可以使用dplyr执行此任务,以获得更快的结果:

df1 <- df %>% group_by(ID) %>% 
    dplyr::filter(length(unique(time)) == 4) %>% 
    data.frame()

但是,当您获得每个IDtime的计数时,您会发现其中隐藏了32个(2)行总数):

df1 %>% group_by(time) %>% 
    dplyr::summarise(Counts = n()) %>% 
    data.frame()

#Output:
time Counts
 11   4695  
 21   4695  
 31   4693  
 32      2  
 41   4695 

这表示您有2行,其值为32。事实证明,这是由于你的错字。因此,您可以使用df$time[df$time == 32] <- 31更改它们并再次运行代码。

我希望这很有帮助。

谢谢!