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

R语言pivot_wider转换宽表出现大量NA的解决方法

问题原因

使用pivot_wider时出现大量NA,核心是缺少分组列标识:原始数据中Num_of_section每10条记录完成一次1-10循环,每一轮循环对应宽表的一列,但直接调用函数时,每行的唯一ID会被识别为独立观测,导致每个列下只有单条匹配值,其余位置全部填充为NA。

正确操作步骤
  • 第一步:给每一轮1-10循环的记录生成独立的列分组编号,作为宽表的列名来源
  • 第二步:以Num_of_section为行标识、分组编号为列名来源、Data为值执行宽表转换
  • 第三步:按需调整列名即可匹配目标格式
可复现代码
library(dplyr)
library(tidyr)

# 生成基础宽表(6列值,对应6轮1-10循环)
df_wide <- df1 %>%
  mutate(col_group = rep(1:(n() / 10), each = 10)) %>%
  pivot_wider(
    id_cols = Num_of_section,
    names_from = col_group,
    values_from = Data
  ) %>%
  rename(X = Num_of_section)

# 如果需要得到你给出的12列重复结果,追加以下代码即可
output <- df_wide %>%
  cbind(.[, -1], .[, -1]) %>%
  setNames(c("X", 1:12))

运行后得到的结果和你给出的期望输出完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 08:27:24