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

标签 r long-integer

我有一个类似于下面的长数据框。我想将数据框限制为第一次观察时年龄 <65 岁的人。注意苏在研究过程中年满 65 岁,我不想删除她的任何数据。这是因为她的第一个值 <65。

我尝试创建一个函数....我认为如果我可以为每个人的第一个值大于 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[as.logical(with(df, ave(string, id, FUN= function(x) x[1] < 65))),]

或者使用data.table

library(data.table)
setDT(df)[, .SD[string[1L] <65] , id]

关于r - 长数据 - 当每个人的第一个值 =X R 时删除所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30359393/

相关文章:

java - Java 如何处理溢出整数

r - 如何从嵌套列表中提取一个元素作为向量 - R twitteR 包

读取固定宽度数据而不换行

c++ - 在 32 位和 64 位程序中使用 std::chrono::duration::rep 和 printf

java自动将字符串转换为long?

java - 将字符串数组转换为长数组

c - unsigned long 的确切取值范围是多少?

r - 看到计算机的内存使用量与Rstudio中R的内存使用量?

r - 如何从 Hmisc 中的 latex() 获取 LaTeX 表以对齐列

r - Sweave 诉 Knitr 诉 Rmarkdown : code chunk headers