세 개의 횡단면 데이터 세트가 있으며 하나의 종단 데이터 세트로 병합하려고합니다. 일부 측정 값은 일정하며 (ID, 성별, 커뮤니티) 시간이 지남에 따라 달라집니다 (x1 및 y). 위에서 언급 한 각각의 변수에 대해 하나의 열을 가진 긴 형식의 최종 데이터 세트를 갖고 싶습니다. 나는 merge_recurse()가 트릭을 할 것이라고 생각했지만 y와 x1에 대해 각각 두 개의 열을 생성했다. (비록 data12와 data14가 병합되었지만 첫 번째 병합 이후에이 변수들의 이름이 바뀌었을 까? 이 작업을 간단하고 신속하게 수행하는 방법에 대한 의견이 있으십니까? 아래 예제 데이터.데이터 프레임을 병합하여 종단 데이터 세트 만들기
#Constant over time
id = seq(1, 100, 1)
sex = sample(c("male","female"), 100, replace=TRUE)
community = sample(c("comA", "comB", "comC", "comD"), 100, replace=TRUE)
#2010
year = rep(2010, 100)
x1 = rnorm(100, mean=5, sd=1)
y = rnorm(100, mean=10, sd=2)
z = rep(5, 100)
data10 = data.frame(cbind(id, year, sex, community, y, x1, z))
#2012
year = rep(2012, 100)
x1 = rnorm(100, mean=6, sd=1)
y = rnorm(100, mean=11, sd=2)
data12 = data.frame(cbind(id, year, sex, community, y, x1))
#2014
year = rep(2014, 100)
x1 = rnorm(100, mean=7, sd=1)
y = rnorm(100, mean=12, sd=2)
data14 = data.frame(cbind(id, year, sex, community, y, x1))
#Merge each year's data
library(reshape)
#Create a list of all datasets
alldata=list(data10, data12, data14)
#Merge data from multiple dataframes
data = merge_recurse(alldata, by=c("id", "year", "sex", "community")
head(data)
id year sex community y.x x1.x z y.y x1.y
1 1 2010 female comC 13.1771632561173 4.87556993759158 5 <NA> <NA>
2 2 2010 female comB 13.7778630888456 6.69677435551805 5 <NA> <NA>
3 3 2010 male comD 9.42440506678606 3.10067578314296 5 <NA> <NA>
4 4 2010 female comB 11.0739409098036 4.12318001019941 5 <NA> <NA>
5 5 2010 male comB 11.6015489242693 4.9565493450503 5 <NA> <NA>
6 6 2010 female comB 6.52739602897104 3.76896148237067 5 <NA> <NA>
난 당신이 단지'do.call (rbind, ALLDATA)'을 찾고 있다고 생각? – Arun
샘플 출력을 게시 할 수 있다면 좋을 것입니다. head (data) – Nishanth
죄송합니다, 제 예제 데이터가 다소 오해의 소지가 있습니다. 내 실제 횡단면 데이터 세트는 각 시간 간격으로 측정되지 않는 변수를 포함하므로 do.call (rbind, alldata)이 작동하지 않습니다. 모든 열이 동일하면 완벽하게 작동합니다. 위의 코드의 결과가 위에 추가되었습니다. – DBK