如何从 R 中重复测量的数据集中提取 "final visit" 处的值?

How to extract value at "final visit" from a data set with repeated measurement in R?

假设我有一个重复测量的数据框:

 >m
 id  age    diagnosis
  1   4         0
  1   7         1
  1   9         0
  2   6         1
  4   9         1
  4   10        0

诊断不是时不变的。我怎样才能在最后一次访问(最大年龄)时提取诊断结果以获得这样的结果?

id  age    diagnosis
 1   9         0
 2   6         1
 4   10        0

你可以试试data.tablelast()

library(data.table)
as.data.table(df)[, last(.SD), by = id]
#    id age diagnosis
# 1:  1   9         0
# 2:  2   6         1
# 3:  4  10         0

或者用 dplyr slice(., n())

library(dplyr)
slice(group_by(df, id), n())
# Source: local data frame [3 x 3]
# Groups: id [3]
#
#      id   age diagnosis
#   (int) (int)     (int)
# 1     1     9         0
# 2     2     6         1
# 3     4    10         0

或者使用 base R 中的 duplicated,我们得到逻辑索引来对行进行子集化。

m[!duplicated(m$id,fromLast=TRUE),]
#   id age diagnosis
#3  1   9         0
#4  2   6         1
#6  4  10         0