我有一个看起来像这样的数据框:
> df<-data.frame(A=c(1,1,2,3,NA,NA),B=c(NA,5,2,6,4,8),C=c(NA,NA,2,NA,NA,8))
> df
A B C
1 1 NA NA
2 1 5 NA
3 2 2 2
4 3 6 NA
5 NA 4 NA
6 NA 8 8
我要基于以下3个条件,使用此数据框中的行值创建第4个“ D”列:1)如果行中只有一个值,则将该值分配给D列;2)如果该行中的所有值都相同(不包括NA),则将该“相同”值分配给D列;2)如果行中的任何值不同(不包括NA),则将NA分配给D列。这将创建一个矢量和数据帧,如下所示:
> df$D<-c(1,NA,2,NA,4,8)
> df
A B C D
1 1 NA NA 1
2 1 5 NA NA
3 2 2 2 2
4 3 6 NA NA
5 NA 4 NA 4
6 NA 8 8 8
也许这样的事情将为您工作:
apply(df, 1, function(y) {
A <- unique(na.omit(y))
ifelse(length(A) > 1, NA, A)
})
# [1] 1 NA 2 NA 4 8
我认为这应该可以满足您的条件,或者至少为您提供入门指南。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句