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

求助:基于STATS因子水平重塑bands_F数据框指定列的方法

解决方案:将STATS水平转为波段列后缀

你的需求是把bands_F数据框中,按STAND、COMPANY、SPACING、SPECIES、AGE分组,将STATS的不同水平(MEAN/SD/MIN/MAX)作为后缀,把B2/B3/B4/B8的数值分别对应到新列(比如B2_MEAN、B3_MAX等),也就是长格式转宽格式,以下是两种常用实现方法:

方法1:使用tidyverse的pivot_wider(推荐)

先加载tidyverse包,然后用pivot_wider完成重塑:

# 加载包
library(tidyverse)

# 执行重塑
bands_wide <- bands_F %>%
  pivot_wider(
    id_cols = c(STAND, COMPANY, SPACING, SPECIES, AGE), # 分组的标识列
    names_from = STATS, # 作为列后缀的列
    values_from = c(B2, B3, B4, B8), # 需要转换的数值列
    names_glue = "{.value}_{names_from}" # 新列名的格式:原列名_后缀
  )

# 查看结果结构
str(bands_wide)

方法2:使用Base R的reshape函数

如果不想加载额外包,可以用原生的reshape函数:

# 执行重塑
bands_wide_base <- reshape(
  bands_F,
  idvar = c("STAND", "COMPANY", "SPACING", "SPECIES", "AGE"),
  timevar = "STATS",
  direction = "wide",
  sep = "_" # 列名分隔符
)

# 查看结果结构
str(bands_wide_base)

两种方法都能得到你需要的输出格式:每个波段列都会生成对应STATS水平的新列,标识列(STAND/COMPANY等)保留唯一行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:05:17