我的数据框如下:
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
答案 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"