R函数如何删除某些行?[副本]

7lrncoxx  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(194)

此问题已在此处有答案

Select the row with the maximum value in each group(19回答)
4天前关闭。
我有一个数据是这样的:

每个病人在不同的年龄段都有不同的记录。我怎么能只保留每个病人的记录,在数据中有他们最大的年龄?谢谢你!

oldest_age <- aggregate(AGE~RANDID,data=df,max)

这是我做的方式,但它只保留了年龄和randid列。

k2arahey

k2arahey1#

当您使用dput(your data)共享数据时,帮助您会容易得多。
无论如何,您可以在data.table中使用.I,它在特定条件下查找行数。

library(data.table)

df <- data.table(
  RANDID = c(2448, 2448, 6238, 6238, 6238, 9428, 9428, 10552, 10552),
  SEX = c(1, 1, 2, 2, 2, 1, 1, 2, 2),
  TOTCHOL = c(195, 209,250, 260, 237, 245, 283, 225, 232),
  AGE = c(39, 52, 46, 52, 58, 48, 54, 61, 67)
)

df[df[, .I[which.max(AGE)], by = RANDID]$V1]

输出

RANDID   SEX TOTCHOL   AGE
    <num> <num>   <num> <num>
1:   2448     1     209    52
2:   6238     2     237    58
3:   9428     1     283    54
4:  10552     2     232    67

相关问题