R 说明行中最后一个非NA值是否存在于相应行中
我有一个数据框,如下所示:R 说明行中最后一个非NA值是否存在于相应行中,r,if-statement,dplyr,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
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
我们可以使用
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"
df1$Exist谢谢。我意识到,在我的数据集中间也有NA和空白,这是搞乱的。有没有办法用这个公式来解释呢?我修改了question@NickKnauer您可以更改!is.na(x)
到!is.na(x)&x!=“
更新了对我来说仍然不起作用的帖子,尽管它不存在,但一切都是肯定的。我将提供一个新的数据集。给我一个sec@NickKnauer我试过使用你的数据集,它给了我完全相同的输出。请检查您是否有空格(”
)或空格(”
)