如果行中的最后一个非NA值存在于相应行

时间:2017-03-24 15:21:16

标签: r if-statement dplyr

我的数据框如下:

Col1    Col2    Col3    Col4     Col5    Col6    Col7
   A       B       C                E       F      NA
   J               L      NA        P      NA      NA
   Z       M               P       NA       M      NA
   H               J      NA       NA      NA      NA
   A       B               D        B      NA      NA

如何插入新列,说明该行中是否存在最后一个非NA值?我希望最终输出看起来像这样:

Col1    Col2    Col3    Col4     Col5    Col6    Col7    Exist?
   A       B       C                E       F      NA        No
   J               L      NA       NA      NA      NA        No
   Z       M               P        M      NA      NA       Yes
   H               J      NA       NA      NA      NA        No
   A       B               D        B      NA      NA       Yes

1 个答案:

答案 0 :(得分:1)

我们可以使用apply循环行(MARGIN = 1),删除NA元素(x[!is.na(x)]),查找是否有重复项(anyDuplicated),转换为逻辑向量并将其更改为“是”','否'通过将逻辑转换为数字索引

df1$Exist <- apply(df1, 1, FUN = function(x) 
            c("No", "Yes")[(anyDuplicated(x[!is.na(x) & x != "" ])!=0) +1])
df1$Exist
#[1] "No"  "No"  "Yes" "No"  "Yes"