如何识别一组有序列中的第一个零点?

时间:2018-03-18 22:42:48

标签: r dataframe calculated-columns survival

我尝试格式化数据集以用于某些生存分析模型。每一行都是一所学校,时变栏是当年在该学校注册的学生总数。假设数据框看起来像这样(也有时间不变的列)。

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;并可以相应地重新命名列。

问题的更一般版本,对于一系列时间排序列,如何识别出现给定值的第一列?

2 个答案:

答案 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.colrowSums

的选项
df1$died <- max.col(!df1[-1], "first") * NA^!rowSums(!df1[-1])
df1$died
#[1]  4 NA  3  2