df
ID V1 V2 V3 V4 V5 V6
1 10007 PrEP EXP NA PrEP FU NA NA NA
2 10038 NA NA PrEP FU NA NA PrEP EXP
3 10039 PrEP FU NA NA NA PrepFU EXP PrEP EN
4 10058 NA NA PrepFU EXP PrEP FU NA NA
5 10062 NA NA PrepFU EXP NA NA PrEP FU
如何仅选择上一个响应以从上述数据集中创建新变量。 输出变量为
ID V1 V2 V3 V4 V5 V6 Output
1 10007 PrEP EXP NA PrEP FU NA NA NA PrepFU
2 10038 NA NA PrEP FU NA NA PrEP EXP PrEP EXP
3 10039 PrEP FU NA NA NA PrepFU EXP PrEP EN PrEP EN
4 10058 NA NA PrepFU EXP PrEP FU NA NA PrEP FU
5 10062 NA NA PrepFU EXP NA NA PrEP FU PrEP FU
r中的任何代码或建议将不胜感激。
答案 0 :(得分:2)
我们可以使用max.col
来获取每行最后一个非NA元素的列索引,cbind
具有行序列以提取与i
相对应的元素, j
索引
df1$Output <- df1[-1][cbind(seq_len(nrow(df1)), max.col(!is.na(df1[-1]), 'last'))]