长数据-当每个人的第一个值=X R时,删除所有行
我有一个类似于下面的长数据帧。我想将数据帧限制为65岁的人,然后我可以排除这些人长数据-当每个人的第一个值=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
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]