You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么pivot_wider无法对值求和,仅将每个值以字符形式列出

你的代码存在两处导致结果不符合预期的问题:

  1. 列转换逻辑错误:mutate(result=as.numeric(df))是尝试将整个数据框转为数值类型,而非单独处理result列,同时你原始result列中的"NA"是字符串格式,转为数值后会生成真缺失值,求和时需要忽略这类值。
  2. 缺少聚合规则:pivot_wider默认不会对同一分组下的多个值自动聚合,当你指定的分组维度(Class/Test date/Score/Number_student)存在多条重复记录时,默认会把所有对应值打包为列表存放,不会自动求和。

正确的实现代码如下:

library(dplyr)
library(tidyr)

df %>%
  # 单独将result列从字符串转为数值,"NA"会转为缺失值
  mutate(result = as.numeric(result)) %>%
  pivot_wider(
    names_from = Base_Score,
    values_from = result,
    # 指定聚合规则为求和,忽略缺失值
    values_fn = ~ sum(.x, na.rm = TRUE),
    # 无匹配结果的单元格填充为0
    values_fill = 0
  )

运行上述代码即可得到你预期的宽表汇总结果。

内容的提问来源于stack exchange,提问作者Stataq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:36:04