我有一个如下所示的数据框:
> 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
答案 0 :(得分:2)
也许这样的事情对你有用:
apply(df, 1, function(y) {
A <- unique(na.omit(y))
ifelse(length(A) > 1, NA, A)
})
# [1] 1 NA 2 NA 4 8
我认为这应该满足您的条件,或者至少给您一个如何开始的提示。