如何从多个答案中选择多个答案的最后一个答案

时间:2020-04-13 17:39:30

标签: r

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中的任何代码或建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

我们可以使用max.col来获取每行最后一个非NA元素的列索引,cbind具有行序列以提取与i相对应的元素, j索引

df1$Output <- df1[-1][cbind(seq_len(nrow(df1)), max.col(!is.na(df1[-1]), 'last'))]