“如何提取价值”;“最后访问”;从R?中重复测量的数据集?

“如何提取价值”;“最后访问”;从R?中重复测量的数据集?,r,data-extraction,R,Data Extraction,假设我有一个重复测量的数据帧: >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

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

 >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.table的
last()

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


或者使用
baser
中的
duplicated
,我们得到逻辑索引来对行进行子集划分

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

基本等价物:
m[by(seq_len(nrow(m)),m$id,FUN=tail,1),]
甚至更好/更快-
m[tapply(seq_len(nrow(m)),m$id,FUN=tail,1),]
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
m[!duplicated(m$id,fromLast=TRUE),]
#   id age diagnosis
#3  1   9         0
#4  2   6         1
#6  4  10         0