我正在尝试清理我的数据,以便只保留在我的第一个采样周期中具有观察值的重复值。例如,如果我的数据框如下所示:
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))
答案 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