您好我是R的新手,想就如何在数据框架结构中执行求和计算提出一些建议。
year value
Row 1 2001 10
Row 2 2001 20
Row 3 2002 15
Row 4 2002 NA
Row 5 2003 5
如何使用R按年份返回总和值?非常感谢!
year sum value
Row 1 2001 30
Row 2 2002 15
Row 3 2003 5
答案 0 :(得分:2)
有很多方法可以做到这一点。 其中一个是像这样使用函数聚合:
year <- c(2001,2001,2002,2002,2003)
value <- c(10,20,15,NA,5)
mydf<-data.frame(year,value)
mytable <- aggregate(mydf$value, by=list(year), FUN=sum, na.rm=TRUE)
colnames(mytable) <- c('Year','sum_values')
> mytable
Year sum_values
1 2001 30
2 2002 15
3 2003 5
此link也可能有所帮助。
答案 1 :(得分:2)
还有rowsum
,非常有效
with(mydf, rowsum(value, year, na.rm=TRUE))
# [,1]
# 2001 30
# 2002 15
# 2003 5
或tapply
with(mydf, tapply(value, year, sum, na.rm=TRUE))
# 2001 2002 2003
# 30 15 5
或as.data.frame(xtabs(...))
as.data.frame(xtabs(mydf[2:1]))
# year Freq
# 1 2001 30
# 2 2002 15
# 3 2003 5
答案 2 :(得分:1)
LyzandeR在R基础上提供了一个有效的答案。如果你想使用dplyr
这是一个很棒的数据管理工具,你可以这样做:
year <- c(2001,2001,2002,2002,2003)
value <- c(10,20,15,NA,5)
mydf<-data.frame(year,value)
mydf %>%
group_by(year) %>%
summarise(sum_values = sum(value,na.rm=T))
dplyr
在这种情况下的优势在于,对于较大的数据集,它比基数R更快 。我也相信它更具可读性。