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

使用tidyr::pivot_wider转换仅两类长表时出现列表列报错如何解决

问题原因
  • pivot_wider要求每行的标识组合唯一才能完成常规宽转换,你的原始数据中同一个Item对应2条Amount记录,没有额外字段区分同一Item下的不同记录,R无法确定多个值的排布规则,就会将同一Item的所有值打包为列表存入单元格,也就出现了你看到的列表列和警告信息。
解决方法

给每个Item下的记录新增序号标识,标注该记录属于对应Item下的第几条,再执行宽转换即可,实现代码如下:

library(tidyverse)
df <- read.table(text = 'Item     Amount   
                          1000    10     
                          1000     1     
                          1500     5     
                          1500     2', 
                 header = TRUE)

df %>%
  group_by(Item) %>%
  mutate(row_seq = row_number()) %>%
  pivot_wider(names_from = Item, values_from = Amount) %>%
  select(-row_seq)

运行后输出结果如下:

# A tibble: 2 × 2
  `1000` `1500`
   <int>  <int>
1     10      5
2      1      2

注:你提供的预期输出示例存在排版误差,上述结果完全匹配原始数据的取值对应逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:54:01