넓은 데이터를 긴 형식으로 변환하는 방법을 찾는 데 어려움이 있습니다. 나는 하나의 열 (WordCountRegion
)과 같은 방법으로 각 주물과 항목에 대해 올바른 단어가이 세 열 중 하나에서 매핑된다는 문자열 데이터 (A1_R00_FillerNP
, A1_R01_ADV
및 A1_R02_1stEmbV
)의 3 개 열을 가지고 있습니다. 새로운 WordCountRegion
열melt()를 사용하여 값 조회가 필요한 와이드에서로 데이터 형식 변환
: 아래의 코드와 같이 간단한 melt
방법을 사용
나에게이 길의 일부 얻는다 (참고하십시오 df
에서 이상한 문자가 하찮은이다 - 여기를 무시하십시오)
df <- structure(list(Subject = c(101L, 101L, 101L, 101L, 101L, 101L,
101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L,
101L), condition = structure(c(2L, 1L, 3L, 2L, 1L, 3L, 2L, 1L,
3L, 2L, 1L, 3L, 2L, 1L, 3L, 2L, 1L, 3L), .Label = c("P", "R",
"S"), class = "factor"), item = c(101L, 102L, 103L, 101L, 102L,
103L, 101L, 102L, 103L, 101L, 102L, 103L, 101L, 102L, 103L, 101L,
102L, 103L), A1_R00_FillerNP = structure(c(3L, 2L, 1L, 3L, 2L,
1L, 3L, 2L, 1L, 3L, 2L, 1L, 3L, 2L, 1L, 3L, 2L, 1L), .Label = c("SÌÇna d_r allvarliga konsekvenser",
"SÌÇna d_r fina _ppeltr_d", "SÌÇna d_r gamla skottk_rror"
), class = "factor"), A1_R01_ADV = structure(c(1L, 1L, 2L, 1L,
1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L), .Label = c("alltid",
"f_rresten"), class = "factor"), A1_R02_1stEmbV = structure(c(3L,
2L, 1L, 3L, 2L, 1L, 3L, 2L, 1L, 3L, 2L, 1L, 3L, 2L, 1L, 3L, 2L,
1L), .Label = c("diskuterade", "stod", "tv_ttade"), class = "factor"),
RT = c(0L, 149L, 247L, 272L, 171L, 245L, 317L, 0L, 233L,
0L, 981L, 750L, 272L, 171L, 334L, 317L, 0L, 233L), Region = structure(c(1L,
1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L,
3L, 3L), .Label = c("R00", "R01", "R02"), class = "factor"),
RegionType = structure(c(3L, 3L, 3L, 2L, 2L, 2L, 1L, 1L,
1L, 3L, 3L, 3L, 2L, 2L, 2L, 1L, 1L, 1L), .Label = c("1stEmbV",
"ADV", "FillerNP"), class = "factor"), DV = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L), .Label = c("FIRST_FIXATION_DURATION", "GAZE_DURATION"
), class = "factor")), .Names = c("Subject", "condition",
"item", "A1_R00_FillerNP", "A1_R01_ADV", "A1_R02_1stEmbV", "RT",
"Region", "RegionType", "DV"), class = "data.frame", row.names = c(NA,
-18L))
df1 = melt(df, measure.vars = c("A1_R00_FillerNP","A1_R01_ADV","A1_R02_1stEmbV"), var = "WordCountRegion")
문제는이 코드가 여러 지역의 단어를 잘못 분리한다는 것입니다. 나는 단어가 Region
에 의해 지정된대로 깨지지 않고 WordCountRegion
과 value
에서 볼 수있는 것처럼 Region
의 값을 가로 질러 확장하는 다음과 같은 출력으로 끝납니다. 이걸 사용하려고한다면 melt()가 데이터를 올바르게 깨뜨릴 수 있도록 일종의 추가 사양이 필요하다는 것은 분명합니다. 나는 이것을 (또는 용융() 내에서 할 수 있다면) 어떻게해야할지 모르겠다.
Subject condition item RT Region RegionType DV WordCountRegion value
1 101 R 101 0 R00 FillerNP FIRST_FIXATION_DURATION A1_R00_FillerNP SÌÇna d_r gamla skottk_rror
2 101 P 102 149 R00 FillerNP FIRST_FIXATION_DURATION A1_R00_FillerNP SÌÇna d_r fina _ppeltr_d
3 101 S 103 247 R00 FillerNP FIRST_FIXATION_DURATION A1_R00_FillerNP SÌÇna d_r allvarliga konsekvenser
4 101 R 101 272 R01 ADV FIRST_FIXATION_DURATION A1_R00_FillerNP SÌÇna d_r gamla skottk_rror
5 101 P 102 171 R01 ADV FIRST_FIXATION_DURATION A1_R00_FillerNP SÌÇna d_r fina _ppeltr_d
6 101 S 103 245 R01 ADV FIRST_FIXATION_DURATION A1_R00_FillerNP SÌÇna d_r allvarliga konsekvenser
7 101 R 101 317 R02 1stEmbV FIRST_FIXATION_DURATION A1_R00_FillerNP SÌÇna d_r gamla skottk_rror
8 101 P 102 0 R02 1stEmbV FIRST_FIXATION_DURATION A1_R00_FillerNP SÌÇna d_r fina _ppeltr_d
9 101 S 103 233 R02 1stEmbV FIRST_FIXATION_DURATION A1_R00_FillerNP SÌÇna d_r allvarliga konsekvenser
10 101 R 101 0 R00 FillerNP GAZE_DURATION A1_R00_FillerNP SÌÇna d_r gamla skottk_rror
11 101 P 102 981 R00 FillerNP GAZE_DURATION A1_R00_FillerNP SÌÇna d_r fina _ppeltr_d
12 101 S 103 750 R00 FillerNP GAZE_DURATION A1_R00_FillerNP SÌÇna d_r allvarliga konsekvenser
13 101 R 101 272 R01 ADV GAZE_DURATION A1_R00_FillerNP SÌÇna d_r gamla skottk_rror
14 101 P 102 171 R01 ADV GAZE_DURATION A1_R00_FillerNP SÌÇna d_r fina _ppeltr_d
15 101 S 103 334 R01 ADV GAZE_DURATION A1_R00_FillerNP SÌÇna d_r allvarliga konsekvenser
16 101 R 101 317 R02 1stEmbV GAZE_DURATION A1_R00_FillerNP SÌÇna d_r gamla skottk_rror
17 101 P 102 0 R02 1stEmbV GAZE_DURATION A1_R00_FillerNP SÌÇna d_r fina _ppeltr_d
18 101 S 103 233 R02 1stEmbV GAZE_DURATION A1_R00_FillerNP SÌÇna d_r allvarliga konsekvenser
19 101 R 101 0 R00 FillerNP FIRST_FIXATION_DURATION A1_R01_ADV alltid
20 101 P 102 149 R00 FillerNP FIRST_FIXATION_DURATION A1_R01_ADV alltid
21 101 S 103 247 R00 FillerNP FIRST_FIXATION_DURATION A1_R01_ADV f_rresten
인가가 나는 아래의 샘플로,
Region
에 의해/일치하는 줄을이를 얻을 수
melt()
을 수정할 수있는 방법 : 나는 완전히 잘못된 기능을 사용하고있는 경우,
Subject condition item RT Region RegionType DV WordCountRegion value
1 101 R 101 0 R00 FillerNP FIRST_FIXATION_DURATION A1_R00_FillerNP SÌÇna d_r gamla skottk_rror
2 101 P 102 149 R00 FillerNP FIRST_FIXATION_DURATION A1_R00_FillerNP SÌÇna d_r fina _ppeltr_d
3 101 S 103 247 R00 FillerNP FIRST_FIXATION_DURATION A1_R00_FillerNP SÌÇna d_r allvarliga konsekvenser
4 101 R 101 272 R01 ADV FIRST_FIXATION_DURATION A1_R01_ADV alltid
5 101 P 102 171 R01 ADV FIRST_FIXATION_DURATION A1_R01_ADV alltid
6 101 S 103 245 R01 ADV FIRST_FIXATION_DURATION A1_R01_ADV f_rresten
7 101 R 101 317 R02 1stEmbV FIRST_FIXATION_DURATION A1_R02_1stEmbV tv_ttade
8 101 P 102 0 R02 1stEmbV FIRST_FIXATION_DURATION A1_R02_1stEmbV stod
9 101 S 103 233 R02 1stEmbV FIRST_FIXATION_DURATION A1_R02_1stEmbV diskuterade
10 101 R 101 0 R00 FillerNP GAZE_DURATION A1_R00_FillerNP SÌÇna d_r gamla skottk_rror
11 101 P 102 981 R00 FillerNP GAZE_DURATION A1_R00_FillerNP SÌÇna d_r fina _ppeltr_d
12 101 S 103 750 R00 FillerNP GAZE_DURATION A1_R00_FillerNP SÌÇna d_r allvarliga konsekvenser
또는 , 누군가 더 나은 해결책을 향해 나를 가리킬 수 있었습니까? 아마도 실제 조회를 수행하는 무언가가 필요합니까?
코드 스 니펫에 배치 등으로 인해 묻는 것을 정확하게 따라 가기가 어렵습니다. 지역지도를 스태킹중인 세 개의 열로 매핑하는 방법을 어떻게 녹여야하나요? 문제는 df1에서 얻은 결과에 지역 라벨이 잘못 붙어 있다는 것입니까? 그렇다면 WordCountRegion의 값에서 R00, R01 등을 찾아 녹은 데이터 프레임에서 영역을 재현 할 수 있습니까? – eamcvey
안녕하세요. 일부 서식을 변경하고 문제를보다 명확하게 수정하기 위해 편집했습니다. 아마 당신이 말했듯이, 휴식이 어디에서 일어나야 하는지를 알아야하기 때문에 melt()를 사용하는 것이 가능하지 않을 수도 있습니다. 더 잘 작동 할 수있는 조회 기능이 있습니까? –
'WordCountRegion'의 영역이'Region'과 일치 할 때 행만 유지하도록 데이터 집합을 필터링 한 후 필터링 할 수 있습니다. 'WordCountRegion'이 항상 문자열의 요소 4-6에 지역 코드를 가지고 있다면'subset (df1, Region == substr (WordCountRegion, 4, 6))'입니다. 또는'subset (df1, Region == gsub ("^. * (R [0-9] +). * $", "\\ 1", WordCountRegion))'와 같은 것입니다. – aosmith