将非互斥变量重新编码为互斥变量

问题描述:

任何与此有关的帮助将不胜感激。将非互斥变量重新编码为互斥变量

我有四个重叠的竞争变量,我想使其互斥并将其余部分编码到一个新的变量混合变量中。我一直在尝试使用if和ifelse,并且失败。

white<-c(1,1,1,NA) 
black<-c(0,NA,1,0) 
asian<-c(0,0,0,0) 
aian<- c(0,0,0,0)  
white.n<-c(1,1,0,NA) 
mix<-c(0,0,1,0) 

df<-cbind(white,black,asian,aian,white.n,mix) 
df 

     white black asian aian white.n mix 
[1,]  1  0  0 0  1 0 
[2,]  1 NA  0 0  1 0 
[3,]  1  1  0 0  0 1 
[4,] NA  0  0 0  NA 0 

任何想法将不胜感激。

+0

你使用什么语言? – pppp

你想要一个将所有代码编码为互斥变量的新列,对吧?喜欢这个?

white<-c(1,1,1,NA,0) 
black<-c(0,NA,1,0,0) 
asian<-c(0,0,0,0,1) 
white<-c(1,1,0,NA,0) 

df<-data.frame(white,black,asian,white) 
df 

row.count <- rowSums(df, na.rm=T) 
df$code[row.count > 1] <- "Mixed" 
df$code[row.count == 1] <- names(which.max(df[row.count == 1, ]))