2011-03-27 86 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