2017-11-14 4 views
2

이 같은 고유 ID와 다른 열이있는 dataframe 가지고있는 것 ID로 하나를 2 열을 가지고 목표로 dataframe을 녹여용융 열

df = data.frame(id = c('id1', 'id2', 'id3'), 
       col_1 = c(0,1,0), 
       col_2 = c(1,0,0), 
       col_3 = c(1,1,NA), 
       col_4 = c(1,NA,NA)) 

어떻게 가능을 열 개수에 따라 반복되고 두 번째 열은 다른 열의 값을 포함합니다. 예상 출력

예 :

df = data.frame(id = c('id1', 'id1', 'id1', 'id1', 'id2', 'id2', 'id2', 'id2', 'id3', 'id3', 'id3', 'id3'), 
       col_1 = c(0,1,1,1,1,0,1,NA,0,0,NA,NA)) 
+0

은'녹 (= "ID"에 의해, DF)를' –

+1

'tidyr : (수집 DF, VAR, 값 - id)' – useR

답변

1

시도 :

library(reshape2) 
df = data.frame(id=c('id1', 'id2', 'id3'),col_1 = c(0,1,0),col_2 = c(1,0,0),col_3 = c(1,1,NA),col_4 = c(1,NA,NA)) 
x <- melt(df, id.vars = "id") 
x[order(x$id),c(1,3)] 
+0

고맙습니다. 'x [order (x $ id), c (1,3)]'에서 c (1,3)는 입력 데이터 프레임의 행 수를 의미합니까? – PitterJe

+0

좋아요! R에서 행렬로 작업 할 때 대괄호 사이의 첫 번째 값은 행을 참조하고 두 번째 열은 x [행, 열]을 참조합니다. 나는. c (1,3) 행렬 1과 3을 행렬로부터 잘라 낸다. (순서 (x $ id)는 단지 행을 정렬한다.) @PitterJe – Pierre

관련 문제