简单的问题。我有一个数据框,其中主题对时间变量和状态变量(死亡/活着)有不同的观察结果。我想从每个受试者的最后一次观察中制作一个子集,但由于每个受试者的观察数量是可变的,并且来自690个受试者的1143个观察结果,手动挑选它们将是一个令人头疼的问题。聚合不会成功,因为每个主题的最后一次观察已经是前一个聚合的“时间价值”。
name visit.date status
30 20 337 1
31 20 421 1
32 20 502 0 <- Row to subset
33 21 427 0 <- Row to subset
34 22 NA NA <- Row to subset
35 23 800 1
36 23 882 0 <- Row to subset
37 24 157 1
38 24 185 1
39 24 214 1
40 24 298 1
41 24 381 1 <- Row to subset
42 25 386 1 <- Row to subset
43 26 NA NA <- Row to subset
44 27 522 1
45 27 643 1
46 27 711 1 <- Row to subset
47 28 280 0 <- Row to subset
48 29 227 1
49 29 322 1
50 29 335 0 <- Row to subset
正如你所看到的,有一些科目只有一个观察,我将保留这些,但是有2,3或更多观察的科目。如何对每个主题进行子集化并使每个主题只进行1次观察(总共620行)。这是一个生存分析,我可以对数据帧进行分析,但是我不能对这个数据帧进行coxph,因为我想要对比的自变量只有620个长度(每个主题1个)。
提前谢谢!
答案 0 :(得分:1)
以下是使用dplyr
的解决方案:
library(dplyr)
df %>% group_by(name) %>% filter(row_number()==n())
答案 1 :(得分:1)
df[c(df$name[-nrow(df)]!=df$name[-1L],T),];
## name visit.date status
## 32 20 502 0
## 33 21 427 0
## 34 22 NA NA
## 36 23 882 0
## 41 24 381 1
## 42 25 386 1
## 43 26 NA NA
## 46 27 711 1
## 47 28 280 0
## 50 29 335 0