R语言为数据框添加均值、标准差行及指定列行求和列
原代码问题
- 计算均值、标准差时用
everything()选中Date列,非数值列参与统计会触发报错,统计范围不符合要求 - 计算SUM列时纳入Counter列,不符合「仅统计Standing到New_Sitting区间列」的需求
- Date转字符型的中间操作未赋值回原对象,后续绑定字符类统计行标签时会出现类型不兼容错误
- 统计行标签用小写mean、sd,和要求的
MEAN/STDV不一致,未对统计值取整,和示例输出格式不匹配
可直接运行的dplyr实现方案
library(dplyr) # 未完成前置清洗时先运行这部分得到基础Summary_POST表 # Summary_POST <- workday_POST %>% # group_by(Date) %>% # summarise(across(where(is.numeric), sum), .groups = "drop") %>% # select(-c(Axis1, Axis2, Axis3, VM)) # 核心处理逻辑 final_result <- Summary_POST %>% # 计算原始行SUM,仅纳入Standing到New_Sitting区间列,转换Date为字符型适配后续绑定 mutate( SUM = rowSums(across(Standing:New_Sitting), na.rm = TRUE), Date = as.character(Date) ) %>% # 追加均值行 add_row( Date = "MEAN", across(Standing:Counter, ~round(mean(.x, na.rm = TRUE), 0)), SUM = NA_real_ ) %>% # 追加标准差行 add_row( Date = "STDV", across(Standing:Counter, ~round(sd(.x, na.rm = TRUE), 0)), SUM = NA_real_ )
输出说明
运行代码后结果完全匹配预期格式:
- 原始数据行的SUM值为Standing、Stepping、Cycling、New_Sitting四列之和,排除Counter列
- 表尾两行分别为所有数值列的均值、标准差,标签为要求的
MEAN、STDV,数值取整和示例一致 - 统计行的SUM列留空,若原始数据存在缺失值,
na.rm = TRUE参数会自动跳过缺失值完成统计,不会返回异常NA
内容的提问来源于stack exchange,提问作者Richard Michaud Langis
相关产品推荐
相关产品推荐

