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

如何使用pivot wider将包含列表的列展开为宽格式列?

R实现多值列表列转宽格式逻辑值表

你的原始数据里col2是存储多值的列表列,无法直接调用pivot_wider完成转换,需要先拆分嵌套的多值再做宽表转换,完整操作步骤如下:

  • 第一步:加载依赖包,构造和你示例一致的测试数据
library(dplyr)
library(tidyr)

# 匹配你给出的原始数据结构
df <- tibble(
  col1 = c("a", "b"),
  col2 = list(c(1,2), 5)
)
  • 第二步:执行转换逻辑
    核心思路是先把列表里嵌套的多个值拆成多行长格式,给存在的取值标记TRUE,再转宽,不存在对应取值的位置自动填充FALSE:
df_res <- df %>%
  # 将col2中存储的多值向量拆分为独立行
  unnest_longer(col2) %>%
  # 给存在的取值打存在标记
  mutate(exist = TRUE) %>%
  # 转宽格式
  pivot_wider(
    names_from = col2,
    # 列名统一加col2_前缀,匹配你的命名要求
    names_prefix = "col2_",
    values_from = exist,
    # 该取值在对应行不存在时填充FALSE
    values_fill = FALSE
  )

运行后输出结果和你预期的结构完全一致:

# A tibble: 2 × 4
  col1  col2_1 col2_2 col2_5
  <chr> <lgl>  <lgl>  <lgl> 
1 a     TRUE   TRUE   FALSE 
2 b     FALSE  FALSE  TRUE  

补充说明:如果你的原始数据里col2存的是类似"c(1,2)"的文本字符串而非真正的R向量,需要先把字符串解析为向量再执行上述步骤,解析参考代码:df <- df %>% mutate(col2 = lapply(col2, \(x) eval(parse(text = x))))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:06:21