R - 根据另一列中的类别从一列中获取总和

时间:2014-12-23 17:02:47

标签: r

我是R的新手,并试图自己学习。我有csv格式的数据,1,048,575行和73列。我正在看三个栏目 - 年份,国家,援助_数量。我希望按国家为i)所有年份获得aid_amount的总和,以及ii)1991 - 2010年。我尝试了以下内容以获取所有年份但是我获得的结果与我在Excel中排序/求和时的结果不同。这里有什么问题。此外,我应该对ii)1991 - 2010年做出什么改变。感谢。

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.

几列的前几行如下所示:

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 个答案:

答案 0 :(得分:5)

您可以将data.table用于大数据集。如果您希望按aid_amount

获取每个country year的总和
library(data.table)
setkey(setDT(aiddata), country,year)[, 
         list(aid_amount=sum(aid_amount)), by=list(country, year)]

获取每个aid_amount

country总和
setkey(setDT(aiddata), country)[, 
          list(aid_amount=sum(aid_amount)), by=list(country)]