仅在第一个采样期间表示重复值时才保留重复值

时间:2016-12-05 17:45:32

标签: r dataframe duplicates unique subset

我正在尝试清理我的数据,以便只保留在我的第一个采样周期中具有观察值的重复值。例如,如果我的数据框如下所示:

    df <- data.frame(ID = c(1,1,1,2,2,2,3,3,4,4), period = c(1,2,3,1,2,3,2,3,1,3), mass = rnorm(10, 5, 2)) 

    df

       ID period     mass
    1   1      1 3.313674
    2   1      2 6.371979
    3   1      3 5.449435
    4   2      1 4.093022
    5   2      2 2.615782
    6   2      3 3.622842
    7   3      2 4.466666
    8   3      3 6.940979
    9   4      1 6.226222
    10  4      3 4.233397

我想仅观察在第1期间测量的个人重复观察结果。我的新数据框架将如下所示:

       ID period     mass
    1   1      1 3.313674
    2   1      2 6.371979
    3   1      3 5.449435
    4   2      1 4.093022
    5   2      2 2.615782
    6   2      3 3.622842
    9   4      1 6.226222
    10  4      3 4.233397

使用此页面上的建议(Remove all unique rows)我尝试使用以下命令,但它留在个人3的观察中(在第1期未测量)。

    subset(df, duplicated(ID) | duplicated(ID, fromLast=T))

2 个答案:

答案 0 :(得分:3)

如果您需要基本解决方案,以下内容也应该有效。

> df_new <- df[df$ID %in% df$ID[df$period == 1], ]
> df_new
   ID period     mass
1   1      1 3.238832
2   1      2 3.428847
3   1      3 1.205347
4   2      1 8.498452
5   2      2 7.523085
6   2      3 3.613678
9   4      1 3.324095
10  4      3 1.932733

答案 1 :(得分:0)

您可以按如下方式使用flush

dplyr