R 跟踪每个组中是否发生了事件
我当前遇到代码问题。作为一个初学者,我真的找不到解决办法R 跟踪每个组中是否发生了事件,r,R,我当前遇到代码问题。作为一个初学者,我真的找不到解决办法 library(data.table) id<- c(rep(1,5), rep(2,5),rep(3,5)) time <-c (1,2,3,4,5,1,2,3,4,5,1,2,3,4,5) death <-c(0,1,0,1,1,0,0,1,1,0,0,1,1,0,1) table<-data.table(id, time, death) 这似乎是一个相当常见的错误,但尽管如此,我无法使我的代码正常工作。 非
library(data.table)
id<- c(rep(1,5), rep(2,5),rep(3,5))
time <-c (1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)
death <-c(0,1,0,1,1,0,0,1,1,0,0,1,1,0,1)
table<-data.table(id, time, death)
这似乎是一个相当常见的错误,但尽管如此,我无法使我的代码正常工作。
非常感谢能帮助我的人 这里有一个带有
ave
> with(table,as.numeric(ave(death,id,FUN = cumsum)>0))
[1] 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1
这是一个带有
ave
> with(table,as.numeric(ave(death,id,FUN = cumsum)>0))
[1] 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1
R中有很多函数可以帮助您进行这样的分组数据操作。对于或
while
循环,不需要显式的
由于death\u理想值
为1后仍为1,因此这里您可以取cummax
,它是每个id
的累积最大值
这可以在data.table
中完成
library(data.table)
table[, death_ideal := cummax(death), id]
table
# id time death death_ideal
# 1: 1 1 0 0
# 2: 1 2 1 1
# 3: 1 3 0 1
# 4: 1 4 1 1
# 5: 1 5 1 1
# 6: 2 1 0 0
# 7: 2 2 0 0
# 8: 2 3 1 1
# 9: 2 4 1 1
#10: 2 5 0 1
#11: 3 1 0 0
#12: 3 2 1 1
#13: 3 3 1 1
#14: 3 4 0 1
#15: 3 5 1 1
在R底
table$death_ideal <- with(table, ave(death, id, FUN = cummax))
R中有很多函数可以帮助您进行这样的分组数据操作。对于
或while
循环,不需要显式的
由于death\u理想值
为1后仍为1,因此这里您可以取cummax
,它是每个id
的累积最大值
这可以在data.table
中完成
library(data.table)
table[, death_ideal := cummax(death), id]
table
# id time death death_ideal
# 1: 1 1 0 0
# 2: 1 2 1 1
# 3: 1 3 0 1
# 4: 1 4 1 1
# 5: 1 5 1 1
# 6: 2 1 0 0
# 7: 2 2 0 0
# 8: 2 3 1 1
# 9: 2 4 1 1
#10: 2 5 0 1
#11: 3 1 0 0
#12: 3 2 1 1
#13: 3 3 1 1
#14: 3 4 0 1
#15: 3 5 1 1
在R底
table$death_ideal <- with(table, ave(death, id, FUN = cummax))
非常感谢你!我使用了你的第二个解决方案(以R为基数),这对我来说更有效。但有一个小细节,我不明白的公式。R如何知道它必须查看time列,因为在公式中time列不存在。再次感谢您的帮助。我的答案中没有显示时间栏。我假设time
列始终按示例所示进行排序。如果不是,您可能需要在应用答案之前对数据进行排序。明白,我已经这样做了。非常感谢您的帮助,它似乎工作得很好!非常感谢你!我使用了你的第二个解决方案(以R为基数),这对我来说更有效。但有一个小细节,我不明白的公式。R如何知道它必须查看time列,因为在公式中time列不存在。再次感谢您的帮助。我的答案中没有显示时间栏。我假设time
列始终按示例所示进行排序。如果不是,您可能需要在应用答案之前对数据进行排序。明白,我已经这样做了。非常感谢您的帮助,它似乎工作得很好!
table %>% group_by(id) %>% mutate(death_ideal = cummax(death))