计算R中的行和值

时间:2014-10-26 12:20:22

标签: r dataframe

您好我是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

3 个答案:

答案 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更快 。我也相信它更具可读性。