【发布时间】:2014-11-16 23:19:02
【问题描述】:
我在 R 中有一个如下所示的数据框
data
x1 x2 x3a x3b x3c x3d x4
A 43 0 0 0 1 P
B 23 0 1 0 0 Q
C 11 0 0 0 0 R
D 66 0 0 1 0 S
现在我想将列 x3a, x3b, x3c, x3d 合并为单列。预期的单列将包含 x3a,x3b,x3c,x3d 中值为 1 的列号。该值应编号为(x3a=1,x3b=2,x3c=3,x3d=4)。预期结果将如下所示
x3
[1] 4 2 0 3
我尝试了reshape() 函数,但无法得到我真正想要的
q<-data[,3:6]
r<-reshape(q,varying=c("x3a","x3b","x3c","x3d"),v.names="x3",direction="long",times=c("x3a","x3b","x3c","x3d"))
final<-r[r$x3!=0,][,3]
但这并没有给出预期的结果。它错过了2 和3 之间的值0:
final
[1]4 2 3
【问题讨论】:
-
每行的那些是唯一的吗?