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

将含缺失值的长格式R数据框转换为宽格式的技术求助

解决R语言数据框转宽格式的问题

不用for循环,用dplyr+tidyr的组合就能轻松搞定,步骤如下:

1. 加载必要工具包

library(dplyr)
library(tidyr)

2. 清理原始数据

先过滤掉fruit或fertiliser列的NA值(这些行无法对应到目标的3×9组合,留着没用):

clean_df <- df %>%
  filter(!is.na(fruit), !is.na(fertiliser))

3. 转成目标宽格式

用pivot_wider直接完成转换,自动生成a_mean、b_lower_ci这类命名的列:

wide_df <- clean_df %>%
  pivot_wider(
    # 指定行的唯一标识:水果+肥料组合
    id_cols = c(fruit, fertiliser),
    # 用method的取值作为列名前缀
    names_from = method,
    # 需要展开的指标字段
    values_from = c(mean, lower_ci, upper_ci, pval, x, y),
    # 拼接列名的规则:method值+下划线+指标名
    names_glue = "{method}_{.value}"
  )

补充说明

如果某个fruit-fertiliser-method组合缺失数据,转换后对应位置会是NA,你可以用values_fill参数指定填充值,比如:

wide_df <- clean_df %>%
  pivot_wider(
    id_cols = c(fruit, fertiliser),
    names_from = method,
    values_from = c(mean, lower_ci, upper_ci, pval, x, y),
    names_glue = "{method}_{.value}",
    # 给数值型字段填充NA,也可以换成0之类的自定义值
    values_fill = list(mean = NA_real_, lower_ci = NA_real_, upper_ci = NA_real_, 
                       pval = NA_real_, x = NA_real_, y = NA_real_)
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:23:20