长数据-当每个人的第一个值=X R时,删除所有行

长数据-当每个人的第一个值=X R时,删除所有行,r,long-integer,R,Long Integer,我有一个类似于下面的长数据帧。我想将数据帧限制为65岁的人,然后我可以排除这些人 df$first<-ave(df$string, df$id, FUN=function(x) [1]>65) ##wrong! id string 1 pat 71 2 pat 72 3 pat 73 4 pat 74 5 tom 51 6 tom 52 7 tom 53 8 tom

我有一个类似于下面的长数据帧。我想将数据帧限制为65岁的人,然后我可以排除这些人

df$first<-ave(df$string, df$id, FUN=function(x) [1]>65)  ##wrong!



 id string
1    pat     71
2    pat     72
3    pat     73
4    pat     74
5    tom     51
6    tom     52
7    tom     53
8    tom     54
9    sue     63
10   sue     64
11   sue     65
12   sue     66
13  mary     68
14  mary     69
15  mary     70
16  mary     71
17 harry     17
18 harry     18
19 harry     19
20 harry     20
df$first65)#错了!
id字符串
第71页第1页
第2页第72页
第73页第3页
第4页第74页
5汤姆51
6汤姆52
7汤姆53
8汤姆54
9苏63
10苏64
11苏65
12苏66
13玛丽68
14玛丽69
15玛丽70
16玛丽71
哈利17
哈利18
哈利19
哈利20
有人能解释一下吗?

你可以用

df[as.logical(with(df, ave(string, id, FUN= function(x) x[1] < 65))),]

此代码删除sue的两行。我想保留她的所有行。@user2363642我想我在编辑之前使用的那一行是正确的。编辑后未检查。请检查更新
library(data.table)
setDT(df)[, .SD[string[1L] <65] , id]