2016-05-17 73 views
2

任何與此有關的幫助將不勝感激。將非互斥變量重新編碼爲互斥變量

我有四個重疊的競爭變量,我想使其互斥並將其餘部分編碼到一個新的變量混合變量中。我一直在嘗試使用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

回答

1

你想要一個將所有代碼編碼爲互斥變量的新列,對吧?喜歡這個?

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, ]))