2013-06-14 2 views
0

나는 5 개의 개별 CSV 파일에 5 주간의 측정 데이터가 있으며이를 합리적인 단일 문서로 병합하는 방법을 찾고 있습니다. 내가 겪고있는 문제는 모든 데이터 포인트가 각 파일에 존재하는 것은 아니며, 나의 최대 길이는 ~ 20k 행이고 가장 작은 것은 ~ 2k이므로 1 : 1 관계가 없다는 것입니다.고르지 않은 데이터 파일 병합

Keyword    URL  5/12 Rank 
activity   site.com    2 
activity site.com/page    1 
backup site.com/backup    4 

다음 파일은 다음과 같이 보일 것입니다 : 내가 끝낼 싶습니다 무엇

Keyword    URL  5/19 Rank 
activity site.com/page    2 
database site.com/data    3 

Keyword    URL  5/12 Rank  5/19 Rank 
activity   site.com    2    - 
activity site.com/page    1    2 
backup site.com/backup    4    - 
database site.com/data    -    3 

같은 것입니다 여기처럼 내 데이터가 어떻게 표시되는지를 보여줍니다 내가 선호하는 것은 R로 할 수있다. 내가 라고 생각하면plyr이긴하지만, 전에는 사용 해 본 적이 없다. 함께.

답변

2

사용 merge : 당신이 여러 테이블이있는 경우

csv1 <- read.table(header=TRUE, text=" 
Keyword    URL  5/12_Rank 
activity   site.com    2 
activity site.com/page    1 
backup site.com/backup    4 
") 

csv2 <- read.table(header=TRUE, text=" 
Keyword    URL  5/19_Rank 
activity site.com/page    2 
database site.com/data    3 
") 

csv12 <- merge(csv1, csv2, all=TRUE) 

#> csv12 
# Keyword    URL X5.12_Rank X5.19_Rank 
#1 activity  site.com   2   NA 
#2 activity site.com/page   1   2 
#3 backup site.com/backup   4   NA 
#4 database site.com/data   NA   3 

, 당신이 list에 넣어 및 Reduce 사용할 수 있습니다

csv3 <- read.table(header=TRUE, text=" 
Keyword    URL  5/42_Rank 
activity   site.com    5 
html  site.com/data    6 
") 
L <- list(csv1, csv2, csv3) 

Reduce(f=function(x,y)merge(x,y,all=TRUE), L) 

결과가

# Keyword    URL X5.12_Rank X5.19_Rank X5.42_Rank 
#1 activity  site.com   2   NA   5 
#2 activity site.com/page   1   2   NA 
#3 backup site.com/backup   4   NA   NA 
#4 database site.com/data   NA   3   NA 
#5  html site.com/data   NA   NA   6 
+0

당신은 단지'사용할 수 있습니다 all = TRUE'이며,주의를 기울이고 걱정하기 전에 OP는 출력 사양에 오타가 있습니다 양이온. – joran

+0

...이 모든 작업을 한꺼번에 처리 할 수 ​​있도록 Reduce (function (x, y) merge (x, y, all = TRUE), list (csv1, csv2, csv3)) – joran

+0

고맙습니다. @joran! 편집 됨 –

관련 문제