2012-10-01 6 views
1

(여전히) r에 익숙하지 않으며 데이터를 여러 번 녹여야하는 방법에 대해 혼란스러워합니다.변수의 여러 범위를 녹여서

Region RT WordRegion Word 
R1_1.RT 237 R1_1 the 
... 
R1_2.RT 177 R1_2 new 
... 

편집 : ".RT"(예를 들어, R1_1.RT와 변수 결말

df <- structure(list(Subject = c(101L, 101L, 101L, 102L, 102L, 102L 
), Condition = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("apass", 
"vpas"), class = "factor"), FreqCode = structure(c(1L, 1L, 1L, 
2L, 2L, 2L), .Label = c("LessVerbal", "MoreVerbal"), class = "factor"), 
Item = c(1L, 4L, 7L, 1L, 4L, 7L), Len = c(80L, 68L, 85L, 
68L, 85L, 79L), R1_1.RT = c(237L, 203L, 207L, 336L, 487L, 
340L), R1_2.RT = c(177L, 225L, 162L, 634L, 590L, 347L), R1_3.RT = c(200L, 
226L, 212L, 707L, 653L, 379L), R1.RT = c(614L, 654L, 581L, 
1677L, 1730L, 1066L), R1_1 = structure(c(1L, 1L, 1L, 1L, 
1L, 1L), .Label = "The", class = "factor"), R1_2 = structure(c(3L, 
1L, 2L, 1L, 2L, 4L), .Label = c("antique", "course", "new", 
"road"), class = "factor"), R1_3 = structure(c(4L, 1L, 2L, 
1L, 2L, 3L), .Label = c("car", "materials", "surfaces", "technology" 
), class = "factor"), R1 = structure(c(3L, 1L, 2L, 1L, 2L, 
4L), .Label = c("The antique car", "The course materials", 
"The new technology", "The road surfaces"), class = "factor")), .Names = c("Subject", 
"Condition", "FreqCode", "Item", "Len", "R1_1.RT", "R1_2.RT", 
"R1_3.RT", "R1.RT", "R1_1", "R1_2", "R1_3", "R1"), class = "data.frame", row.names = 
c(NA, 
-6L)) 

내 목표는 (일부)이이 같다고 출력을 얻을 수 있습니다 : 여기 부분 집합이다)는 지역 이름이며 지역 열로 녹아들 것입니다. 숫자로 끝나는 변수 (예 : R1_1)는 지역 이름 및 관련 값과 정확히 일치합니다. 지역 열과 관련하여 이들을 분석 할 수 있도록 지역 이름과 함께 녹여주고 싶습니다.

코드의 첫 번째 부분에서 모든 값을 지역 열로 녹여 값을 RT로 변경합니다 . 이것은 잘 작동하는 것처럼 보입니다 :

#long transform (with individual regions at end) 
SmallMelt1 = melt(df, measure.vars = c("R1_1.RT", "R1_2.RT", "R1_3.RT", "R1.RT"), var = "Region") 
#change newly created column name to "RT" (note:you have to change the number in [] to match your data) 
colnames(SmallMelt1)[11 ] <- "RT" 

그러나 나는 다른 변수들을 동시에 풀어서 첫 번째 스팬과 수직으로 정렬하는 방법을 얻지 못합니다. 첫 번째 녹은 후에 이런 식으로하고 싶지만 작동하지 않습니다.

#Second Melt for region names (doesn't work) 
SmallMelt2 = melt(SmallMelt1, measure.vars = c("R1_1", "R1_2", "R1_3", "R1"), var = "WordRegion") 

#Change name to Word 
colnames(SmallMelt2)[9] <- "Word" #add col number for "value" here 

설명이 필요하면 알려주십시오. 누군가가 도울 수 있기를 바랍니다. 미리 감사드립니다. - DT

+2

필요한 것을 따라 가기가 정말 어렵습니다. 데이터 세트를 더 작게 만들 수 있습니까 (더 적은 수의 열이지만 적은 수의 열). – Maiasaura

+0

데이터를 만들고 명령을 실행할 때 SmallMelt1은 132 개의 obs 및 34 개의 변수이고 SmallMelt2는 2904 개의 obs 및 14 개의 변수입니다. 68 개의 변수를 얻는다면 잘못된 것이 있습니다. 나는 패키지 모양을 바꾸는 기능을 사용하고 있습니다. 마지막 네 열은 예제와 같습니다. – dcarlson

+0

안녕하세요. 복잡한 데이터에 사과드립니다. 지금은 읽기가 더 쉽다고 생각합니다. '.RT'로 끝나는 변수 (예 : R1_1.RT)는 지역 이름이며 지역 열로 녹여납니다. 숫자로 끝나는 변수 (예 : R1_1)는 지역 이름 및 관련 값과 정확히 일치합니다. 지역 이름과 함께 녹여서 지역 열과 관련하여 분석 할 수 있기를 바랍니다. 위의 메모도 추가했습니다. 그게 더 명확한가요? 감사합니다 –

답변

1

그래서 목록에없는 사람과 상담 한 후에 해결책을 찾았습니다. 제 실수는 제가 첫 번째 단계의 결과물에서 두 번째 단계를 실행하려고 시도했기 때문입니다. 원본 데이터에서 두 단계를 독립적으로 실행 한 다음 연결하면 올바른 결과를 얻을 수 있습니다.

SmallMelt1 = melt(df, measure.vars = c("R1_1.RT", "R1_2.RT", "R1_3.RT", "R1.RT"), var = "Region") 
SmallMelt2 = melt(df, measure.vars = c("R1_1", "R1_2", "R1_3", "R1"), var = "WordRegion") 
SmallMelt3=cbind(SmallMelt1,SmallMelt2[,11]) 
관련 문제