R에서 다음 데이터를 긴 형식으로 가져 오려고합니다.
testdata <- data.frame(rnorm(10),rnorm(10),rnorm(10))
rownames(testdata) <- paste0("ID",1:10) # Ids
colnames(testdata) <- c(2001,2002,2003) # Years
testdata
열 = 시간, 행 = ID. 너무 어려워서는 안되지만 모든 예제에서 다른 방법으로 발견되었습니다.
datatable
에서 어떻게 할 수 있습니까
또는
reshape
또는 다른 인기있는 데이터 프레임 패키지에서?
힌트를 주셔서 감사합니다. 데이터를 전치하여 한 가지 방법을 알고 있지만이 목적에는 다소 비효율적 인 방법 인 것 같습니다.
- 답변 # 1
- 답변 # 2
@Akron의 유용한 답변 :
"그러나 왜?" 부분 :
행 이름에 중요한 정보가 있습니다. 일반적으로 중요한 정보를 저장하기에아닙니다. 재구성 할 때 해당 정보가 필요합니다. 그러면 질문은 왜
rn variable value 1: ID1 2001 -0.25265860 2: ID2 2001 0.50538399 3: ID3 2001 0.68216394 4: ID4 2001 0.62203871 5: ID5 2001 0.59297019 6: ID6 2001 0.69383842 7: ID7 2001 1.77900432 8: ID8 2001 -1.69010623 9: ID9 2001 -2.17762905 10: ID10 2001 0.61463127 11: ID1 2002 0.42120060 12: ID2 2002 -0.16148732 ...
입니까? 데이터 프레임이 아닌 매트릭스를 피드하는 경우 해당 정보를 사용합니까?그 이유는
reshape2::melt(as.matrix(testdata))
피드는 입력하는 데이터 유형에 따라 메소드 (일명보다 구체적인 함수)를 전달하는 일반 함수입니다. 만약melt
행렬이고 당신은melt
를 호출 R은 실제로m
를 실행합니다. . 반대로,melt(m)
데이터 프레임이고melt.matrix(m)
를 호출합니다. R은 실제로df
를 실행합니다. . 이 두 기능-melt(df)
그리고melt.data.frame(df)
-행 이름을 다르게 처리합니다. 방법melt.matrix()
melt.data.frame()
메소드는 원하는 방식으로 행 이름을 사용합니다. 하지 않습니다. 따라서 원하는 출력을 얻으려면 데이터 프레임이 아닌 행렬을melt.matrix
에 공급해야합니다. .melt.data.frame
와 같이 data.frame의 열에 ID 정보가 저장된 경우 시연해야합니다.melt
에서와 같이 행 이름 대신 위), 우리는testdata2
에 데이터 프레임을 공급하는 측면에서 잘 가고 있습니다. :testdata
- 답변 # 3
나에게 확실한 해킹은 데이터 프레임의 행 이름을 다시 일반 열로 늘리는 것 같습니다. 그럼 당신은
melt
중 하나를 사용할 수 있습니다testdata2 <- data.frame( ID = 1:10, year2001 = rnorm(10), year2002 = rnorm(10), year2003 = rnorm(10) ) reshape2::melt(testdata2, "ID") reshape2::melt(testdata2, id.vars="ID", measure.vars=2:4) #equivalently, but verbosely
(불법 한 동료 이름을 'X2001', 'X2002'로 '고정'했습니다. 정말로 유지하려면
reshape/reshape2/tidyr::gather
를 사용하십시오. ) - 답변 # 4
타이어 라이브러리를 사용할 수 있습니다
> data.frame(ID=rownames(testdata), testdata, row.names=NULL) ID X2001 X2002 X2003 1 ID1 0.6714540 1.1516917 0.51332801 2 ID2 -1.7309721 -1.8018835 1.54385452 3 ID3 -0.4831349 -1.3965915 -0.72819988 4 ID4 1.2591651 1.2436120 1.01472455 5 ID5 1.2346326 -1.4587475 -1.75097483 6 ID6 0.4279562 0.2595588 1.36560258 7 ID7 0.9990642 -1.0306002 -1.10165672 8 ID8 1.2118510 -0.3577358 -0.11696953 9 ID9 0.3074985 0.5177188 -0.09954961 10 ID10 -1.0418608 -1.8419336 -0.65401215
...check.names=FALSE)
아크 런의 의견을 완전한 답으로 바꾸려면 :
와이즈 비즈 와이즈 비즈