2016-12-19 2 views
-3

내 문제는 여기에 약 40 개의 데이터 세트, 두 개의 열만있는 모든 csv 파일, (a) 날짜 및 (b) 가격 (각 dataset price 열은 해당 국가로 명명됩니다.) 병합 함수를 사용하여 모든 데이터를 하나의 날짜 열과 몇 개의 가격 열이있는 단일 데이터 집합으로 통합했습니다. 무엇 일어난 것은 내가 날짜 열에서 예를 들어이있다R에서 병합 기능을 사용하는 동안 중복 행이 있습니다. 그러나 합계를 원하지 않습니다.

merged <- Reduce(function(x, y) merge(x, y, by="Date", all=TRUE), list(a,b,c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an)) 

, 3 개 동일한 날짜에 대한 값 만, 해당 국가 값이 분할됩니다 : 이것은 내가 사용하는 기능이다. 예컨대 :

# Date   India China South Korea 

# 01-Jan-2000 5445 NA 4445 NA 
# 01-Jan-2000 NA 1234 NA  NA 
# 01-Jan-2000 NA  NA NA 5678 

가 실제로 나는이 주제와 관련된 다른 질문은 내가 명확하게 필요하지 않은 값의 합계를 요청,이 활용하는 방법을 잘 모릅니다

# 01-Jan-2000 5445 1234 4445 5678 

합니다. 이것은 간단한 예입니다. 안타깝게도 2000 년 1 월부터 2016 년 11 월까지 약 43 개 국가의 일일 데이터를 모두 엉망으로 작성했습니다. 이 문제를 해결할 수있는 도움을 주시면 감사하겠습니다.

+0

에 오신 것을 환영합니다! [좋은 질문을하는 법] (http://stackoverflow.com/help/how-to-ask) 및 [재현 가능한 예] (http://stackoverflow.com/questions/)에 대한 정보를 읽어보십시오. 5963269). 이렇게하면 다른 사람들이 당신을 도울 수있게됩니다. – Jaap

+0

'sum'과'na.rm' 매개 변수를'TRUE'로 설정하여 열을 집계 할 수 있습니다. [일반적인 예는 여기를 참조하십시오 (http://stackoverflow.com/questions/9723208/aggregate-multiple-variables-simultaneously). – Jaap

답변

0

rbind을 사용하여 모든 데이터 프레임을 추가하고 결과를 spread()으로 바꿉니다. 병합은 시작하는 데이터 프레임에 따라 다릅니다.

재현 할 예 :

library(dplyr) 

a <- data.frame(date = Sys.Date()-1:10, cntry = "China", price=round(rnorm(10,20,5),2)) 
b <- data.frame(date = Sys.Date()-6:15, cntry = "Netherlands", price=round(rnorm(10,50,10),2)) 
c <- data.frame(date = Sys.Date()-11:20, cntry = "USA", price=round(rnorm(10,70,25),2)) 


all <- do.call(rbind, list(a,b,c)) 


all %>% group_by(date) %>% spread(cntry, price) 

결과 : StackOverflow의에

  date China Netherlands USA 
*  <date> <dbl>  <dbl> <dbl> 
1 2016-11-29 NA   NA 78.75 
2 2016-11-30 NA   NA 66.22 
3 2016-12-01 NA   NA 86.04 
4 2016-12-02 NA   NA 17.07 
5 2016-12-03 NA   NA 75.72 
6 2016-12-04 NA  46.90 39.57 
7 2016-12-05 NA  51.80 65.11 
8 2016-12-06 NA  57.50 96.36 
9 2016-12-07 NA  46.42 46.93 
10 2016-12-08 NA  45.71 57.63 
11 2016-12-09 15.41  60.09 NA 
12 2016-12-10 16.66  60.07 NA 
13 2016-12-11 23.72  66.21 NA 
14 2016-12-12 19.82  45.46 NA 
15 2016-12-13 14.22  45.07 NA 
16 2016-12-14 27.26   NA NA 
17 2016-12-15 20.08   NA NA 
18 2016-12-16 15.79   NA NA 
19 2016-12-17 17.66   NA NA 
20 2016-12-18 26.77   NA NA