2014-12-23 5 views
1

저는 R에 익숙하지 않고 독자적으로 배우려고합니다. 나는 1,048,575 개의 행과 73 개의 열을 가진 csv 형식의 데이터를 가지고있다. 나는 세 개의 칼럼, 즉 year, country, aid_amount를보고있다. 나는 i) 년 동안, 그리고 ii) 1991 년에서 2010 년 동안 국가 별 aid_amount의 합계를 얻고 싶다. 나는 모든 년간 얻으려고 다음과 같은 노력했지만 내가 얻을 결과 Excel에서 정렬/합계 때 다릅니다. 여기서 뭐가 잘못 됐어. 또한, ii) 1991 년에서 2010 년까지 어떤 변화를 만들어야합니다. 감사.R - 다른 열의 범주를 기반으로 한 열의 합계를 얻습니다.

aiddata <- read.csv("aiddata_research.csv") 
sum_by_country <- tapply(aiddata$aid_amount, aiddata$country, sum, na.rm=TRUE) # There are missing data on aid_amount 
write.csv(sum_by_country, "sum_by_country.csv") 

가 나는 또한 시도 : 몇 열에 대한

sum_by_country <- aggregate(aid_amount ~ country, data = aiddata, sum) instead of tapply. 

처음 몇 행은 다음과 같이 : 당신은 큰 데이터 세트에 대한 data.table을 사용할 수

aiddata_id year country     aid_amount 
23229017 2004 Bangladesh    685899.2666 
14582630 2000 Bilateral, unspecified 15772.77174 
28085216 2006 Bilateral, unspecified 38926.82898 
28702455 2006 Bilateral, unspecified 12633.85659 
29928104 2006 Cambodia     955412.9884 
27783934 2006 Cambodia     11773.77268 
37418683 2008 Guatemala    40150.7331 
94726192 2010 Guatemala    151206.3096 
+1

에 대한 aid_amount의 합계를 얻기 위해 year

library(data.table) setkey(setDT(aiddata), country,year)[, list(aid_amount=sum(aid_amount)), by=list(country, year)] 

country에 대한 aid_amount의 합을 얻고 싶은 경우에 대한 그룹화 변수로 두 번째 질문. 'year '를 포함하는 몇 개의 칼럼을 사용하여 몇 줄의 데이터를 보여줄 수 있습니까? 코드와 관련해서는 첫 번째 부분에서는 괜찮아 보입니다. 재현 가능한 예제를 포함 시키면 훌륭합니다. – akrun

+0

@Akrun이 말했듯이 코드는 괜찮아 보입니다. 데이터도 괜찮은 것처럼 보입니까? 이것은 "재현 가능한 예"의 일부가 가장 가치있게 될 때입니다 ... – PavoDive

+0

감사합니다 @akrun 및 PavoDive. 위의 데이터 행을 몇 개 추가했습니다. 원본 데이터 세트는 http://aiddata.org/aiddata-research-releases에서 다운로드 할 수 있습니다. 첫 번째 글 머리 기호입니다. • AidData 2.1 "Full"버전 – SiriN

답변

4

. 당신은 또한 year``포함 할 필요가 각 country

setkey(setDT(aiddata), country)[, 
      list(aid_amount=sum(aid_amount)), by=list(country)] 
+0

감사합니다. 이것은 정말로 도움이됩니다. 위 코드는 매년 국가 별 합계를 제공합니다. 나는 년 단위가 아닌 여러 해 동안 그것을 원합니다. 미안하지만 분명하지 않다. – SiriN

+0

@SiriN 두 번째 것은 당신에게 그것을 제공해야합니다. – akrun

관련 문제