【发布时间】:2018-08-14 20:21:50
【问题描述】:
我希望在数据框(数据)的一列中每 5 行数据求和,以在第 6 行显示前 5 行的总和(见下表)。我尝试了以下 dplyr,它返回整行中所有总值的总和,rate2 列作为向量。
data$rate2<-
ifelse(data$age!="Overall", data$rate,
ifelse(data$age=="Overall",
data %>%
group_by(data$state,data$year)%>%
summarise_at(vars(rate),
sum, na.rm=TRUE),
ifelse(data$age,is.na(), NA)))
此代码返回以下结果:
State Age Year rate rate2
GA 5 2015 .4 .4
GA 6 2015 .4 .4
GA 7 2015 .5 .5
GA 8 2015 .2 .2
GA 9 2015 .3 .3
GA Overall 2015 c(1.8,7.5)
GA 5 2016 1.0 1.0
GA 6 2016 2.0 2.0
GA 7 2016 .5 .5
GA 8 2016 1.0 1.0
GA 9 2016 3.0 3.0
GA Overall 2016 c(1.8,7.5)
是否有一种方法可以计算“整体”行的 rate2 列中的单个值。我不确定通过使用循环是否可以更好地实现这一点。为清楚起见,我需要能够使用 rate2 列的“Overall”行中的值来对另一列执行后续计算。
State Age Year rate rate2
GA 5 2015 .4 .4
GA 6 2015 .4 .4
GA 7 2015 .5 .5
GA 8 2015 .2 .2
GA 9 2015 .3 .3
GA Overall 2015 1.8
GA 5 2016 1.0 1.0
GA 6 2016 2.0 2.0
GA 7 2016 .5 .5
GA 8 2016 1.0 1.0
GA 9 2016 3.0 3.0
GA Overall 2016 7.5
任何帮助将不胜感激!提前谢谢!
【问题讨论】:
-
能否提供
dput(data)格式的输入数据? -
将其设为列而不是新行不是更好吗?
-
如果您首先为组创建一个 id 列,那么 groupingsets 可能会这样做:stackoverflow.com/a/45759773
-
抱歉,这太可怕了。始终以整洁的数据为目标。 @Frank 的建议是如果你觉得你必须这样做的话。