У меня есть кадр данных в R, который выглядит следующим образом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
в один столбец. Ожидаемый одиночный столбец будет содержать номер столбца со значением 1 из x3a,x3b,x3c,x3d
. Значение должно быть пронумеровано (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]
Но это не дало ожидаемого результата. Он пропустил значение 0
между 2
и 3
:
final
[1]4 2 3
являются те, на ряд уникальных? – Barranka