我是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
答案 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)]