数据框sl含有Period Nrate Organ Hybridbio和biomass等列现利用dplyr根据Period Nrate Hybrid分组对Organ列新增加一个Total在Organ列里增加新的行而不是直接增加一个新列其bio和biomass的值分别为原始Organ所有类的bio和biomass的累积和
可以使用以下代码实现:
library(dplyr)
sl <- sl %>%
group_by(Period, Nrate, Hybrid) %>%
mutate(Total = sum(Organ)) %>%
ungroup() %>%
group_by(Period, Nrate, Hybrid, Organ) %>%
summarise(bio = sum(bio), biomass = sum(biomass)) %>%
bind_rows(sl %>% select(-bio, -biomass))
# 新增一个新行
sl <- sl %>%
group_by(Period, Nrate, Hybrid) %>%
summarise(Total = sum(Total)) %>%
mutate(Organ = "Total", bio = sum(bio), biomass = sum(biomass)) %>%
select(Period, Nrate, Hybrid, Organ, bio, biomass) %>%
bind_rows(sl)
首先,使用group_by函数对Period, Nrate, Hybrid进行分组,然后使用mutate函数新增加一个Total列,其值为Organ列的累积和。接着,再次使用group_by函数对Period, Nrate, Hybrid, Organ进行分组,计算出bio和biomass的累积和。最后,使用bind_rows函数将原始数据框和计算结果合并。
为了新增加一个新的行,可以再次使用group_by函数对Period, Nrate, Hybrid进行分组,计算出Organ列的累积和,并使用mutate函数新增加一个Total行。最后,使用select函数选取需要的列,将结果和原始数据框使用bind_rows函数合并即可。
原文地址: https://www.cveoy.top/t/topic/3vp 著作权归作者所有。请勿转载和采集!