如何在tibble中添加包含前3行均值的新行?
解决方案
要实现仅基于最后3行数据计算均值并追加新行,你可以调整代码中均值的计算范围,或者用更直观的行拼接方式:
方法一:直接构造新行并拼接(推荐)
这种方式逻辑更清晰,便于理解和维护:
# 构造包含最后3行均值的新行 new_row <- fdata %>% ungroup() %>% slice_tail(n = 3) %>% # 筛选最后3行数据 summarise( cyc = "plateau", across(where(is.numeric), mean) # 计算这3行各数值列的均值 ) # 将原数据与新行合并 fdata <- bind_rows(fdata, new_row)
方法二:调整原reframe写法
如果你想沿用原代码的结构,只需把全列均值的计算逻辑替换为仅取最后3行的均值:
fdata <- fdata %>% ungroup() %>% reframe( cyc = c(cyc, 'plateau'), across(where(is.numeric), ~c(., mean(tail(., 3)))) )
关键说明
tail(., 3)用于提取当前列的最后3行数据,确保均值仅基于最近的3条记录计算- 若原数据行数不足3行,
tail(.,3)会自动取所有现有行,均值计算仍能正常运行
内容的提问来源于stack exchange,提问作者Jeff Bishop
相关产品推荐
相关产品推荐

