2013-03-09 54 views
1

我有三個虛擬變量,指示數據採用虛擬變量R中

   DS1 DS2 DS3 
     Pers1  1  0  0 
     Pers2  0  1  0 
     Pers3  0  1  1 

之源創建列表,我想有

   Source 
     Pers1 "DS1" 
     Pers2 "DS2" 
     Pers3 "DS2"|"DS3" 

任何幫助,將不勝感激

回答

2

我會做這樣的事情:

df = data.frame(DS1 = c(1,0,0), 
       DS2 = c(0,1,1), 
       DS3 = c(0,0,1)) 
df$source = apply(df == 1, 1, function(x) paste(names(df)[x], collapse = "|")) 
> df 
    DS1 DS2 DS3 source 
1 1 0 0  DS1 
2 0 1 0  DS2 
3 0 1 1 DS2|DS3 

其中apply循環遍歷df == 1 data.frame的行,並且paste創建一個字符串。

+0

工程就像一個魅力!謝謝! – user1495088 2013-03-09 22:22:30