我尝试格式化数据集以用于某些生存分析模型。每一行都是一所学校,时变栏是当年在该学校注册的学生总数。假设数据框看起来像这样(也有时间不变的列)。
Name total.89 total.90 total.91 total.92
a 8 6 4 0
b 1 2 4 9
c 7 9 0 0
d 2 0 0 0
我想创建一个新专栏,说明学校何时去世,"即,出现零的第一列。最后,我希望自1989年以来这一专栏的成立时间为#34;并可以相应地重新命名列。
问题的更一般版本,对于一系列时间排序列,如何识别出现给定值的第一列?
答案 0 :(得分:4)
如果不存在第一个零(x = 0
)或NA
的列,这是一个基本的R方法:
data$died <- apply(data[, -1], 1, match, x = 0)
data
# Name total.89 total.90 total.91 total.92 died
# 1 a 8 6 4 0 4
# 2 b 1 2 4 9 NA
# 3 c 7 9 0 0 3
# 4 d 2 0 0 0 2
答案 1 :(得分:1)
以下是使用max.col
和rowSums
df1$died <- max.col(!df1[-1], "first") * NA^!rowSums(!df1[-1])
df1$died
#[1] 4 NA 3 2