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
相关产品推荐
相关产品推荐

