R中不同数据类型数据框按列求和并添加为顶行的实现问题
R数据框新增顶部求和行解决方案
问题原因
原代码仅返回val1、val2的求和结果,是因为val3、val4列被识别为非数值类型(如字符型、因子型),summarize_if(is.numeric, sum)仅会对数值类型的列执行求和运算。
解决步骤
- 先校验并转换数值列类型
运行以下代码查看各列数据类型:
str(mydf)
如果确认val3、val4为非数值类型,先转换为数值型:
library(dplyr) mydf <- mydf %>% mutate(across(c(val3, val4), as.numeric))
- 计算汇总行并合并到原数据框
# 生成汇总行 tot <- mydf %>% summarize( id = "Total", name = "", across(where(is.numeric), sum, na.rm = TRUE) ) # 汇总行放在顶部,合并为最终结果 result <- bind_rows(tot, mydf)
输出验证
最终输出的result结构如下:
id name val1 val2 val3 val4 Total 3 6 5.4 4.4 1 abc 1 3 2.2 3.1 2 def 2 3 3.2 1.3
内容的提问来源于stack exchange,提问作者akang
相关产品推荐
相关产品推荐

