我希望对数据帧(数据)的一列中的每5行数据求和,以显示第6行中前5行的总和(请参见下表)。我已经尝试了以下dplyr,该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列的“总体”行中的值来为另一列执行后续计算。
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
任何帮助将不胜感激!预先谢谢你!
答案 0 :(得分:1)
似乎是一种奇怪的数据结构。但是,如果我正确理解它,则需要获取每年的“总体”值以执行一些后续任务,然后使用一个假定的数据框:
library(data.table)
library(tidyverse)
data <- fread ("
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 NA NA
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 NA NA
")
data %>%
filter(Age != "Overall") %>%
group_by(Year) %>%
summarize(Overall = sum(rate2, na.rm = T))