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

R语言多列长表转宽表报错求助:dcast提示缺少聚合函数

解决R语言data.table长表转宽表的问题

错误原因分析

你遇到的报错和结果不符问题,核心有三个问题:

  • 公式方向错误:dcast的语法逻辑是「行分组变量 ~ 列拆分变量」,你写的Con ~ Gr完全搞反了维度,应该把Bro和Gr作为行的分组依据,Con作为列的拆分维度
  • 列名不匹配:原始数据里的频率列是Freq,但代码里写的是Frequency,导致无法正确识别目标变量
  • 缺失行分组变量:未将Bro和Gr纳入行分组,无法生成你需要的行结构

正确代码实现

首先构造可复现的示例数据:

library(data.table)
dt <- data.table(
  Con = c("Jp", "Jp", "Jp", "Jp", "Am", "Am", "Am", "Am"),
  Bro = c("CF", "CF", "CY", "CY", "CF", "CF", "CY", "CY"),
  Gr = c("ii", "ir", "im", "nm", "ii", "ir", "im", "nm"),
  N = c(578, 423, 1835, 808, 160, 106, 730, 2901),
  Freq = c(54.3, 45.7, 69.4, 30.6, 60.1, 39.9, 20.2, 79.8)
)

执行正确的dcast语句:

result <- dcast(dt, Bro + Gr ~ Con, value.var = c("N", "Freq"))
print(result)

输出结果

Bro Gr Jp_N Am_N Jp_Freq Am_Freq
1:  CF ii  578  160    54.3    60.1
2:  CF ir  423  106    45.7    39.9
3:  CY im 1835  730    69.4    20.2
4:  CY nm  808 2901    30.6    79.8

该结果完全匹配你期望的宽表结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:59:56