我有一个df
格式为“long”的data.frame。
df <- data.frame(site = rep(c("A","B","C"), 1, 7),
time = c(11,11,11,22,22,22,33),
value = ceiling(rnorm(7)*10))
df <- df[order(df$site), ]
df
site time value
1 A 11 12
2 A 22 -24
3 A 33 -30
4 B 11 3
5 B 22 16
6 C 11 3
7 C 22 9
问题
如何删除df$time
每个级别不存在唯一元素的行df$site
?
在这种情况下,我想删除df[3,]
,因为df$time
时间戳 33 仅存在于站点 A 而不是站点 B 和站点 C。
期望的输出:
df.trimmed
site time value
1 A 11 12
2 A 22 -24
4 B 11 3
5 B 22 16
6 C 11 3
7 C 22 9
data.frame 很容易有 800k 行和 200k 唯一时间戳。我不想使用循环,但我不知道如何使用这种情况下的矢量化apply()
函数lapply()
。