2011-03-27 75 views
2

如何在數據框中將n虛擬變量互斥並將它們連接成單個變量?在下面的例子從多個虛擬變量轉到單個變量

k <- data.frame(H=sample(c(T, F), 100, T)) 
ifelse(k$H==T, F, sample(c(T, F))) -> k$k 
k$u <- ifelse(k$H==T | k$k==T, F, T) 

有將這些成一個變量與i水平Hku的一種簡單的方法?

我想你可以用ifelse等來做,在這個例子中,但在我的數據文件中,我有幾百個傻瓜,我懶得手動做這個。

+1

爲什麼' - >'運算符仍然存在?這太可怕了。 – 2011-03-27 17:31:14

回答

6
k$i <- names(k)[apply(k, 1, which)] 

會將bool轉換爲一個虛擬變量。

+0

甜: - )...如果他們被編碼爲H /非H,k/non-k和u/non-u或Na而不是非 - 你會怎麼做? – Misha 2011-03-27 17:58:25

+0

對不起,我不明白你的意思。請提供更多信息。 – kohske 2011-03-28 01:34:04