可以使用以下代码实现:

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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录