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

如何将分支/株高/生根/重量等多组特征列分别堆叠后并排整合?

解决方案:多组特征列堆叠并整合展示

核心思路

利用tidyverse中的pivot_longer一次性提取所有特征组的盆号(pot_number)和特征类型,再通过pivot_wider将不同特征展开为并排列,无需多次merge或单独处理单组特征。

代码实现

首先构造匹配你数据结构的模拟数据集:

library(tidyverse)

set.seed(123)
df <- tibble(
  treatment = rep(c("A", "B"), each = 3),
  block = rep(c("1", "2", "3"), 2),
  `1branching` = rpois(6, 5),
  `2branching` = rpois(6, 6),
  `3branching` = rpois(6, 4),
  `1_rooting` = rnorm(6, 10, 2),
  `2_rooting` = rnorm(6, 12, 2),
  `3_rooting` = rnorm(6, 9, 2),
  `1height` = rnorm(6, 20, 3),
  `2height` = rnorm(6, 22, 3),
  `3height` = rnorm(6, 19, 3),
  `1weight` = rnorm(6, 5, 1),
  `2weight` = rnorm(6, 6, 1),
  `3weight` = rnorm(6, 4.5, 1)
)

执行数据转换:

df_processed <- df %>%
  # 第一步:将所有特征列转为长格式,提取盆号和特征类型
  pivot_longer(
    cols = -c(treatment, block),  # 排除treatment、block等标识列
    # 正则匹配列名:提取数字(盆号)和特征类型,兼容有无下划线的格式
    names_pattern = "(\\d+)_?(branching|rooting|height|weight)",
    names_to = c("pot_number", "feature"),
    values_to = "value"
  ) %>%
  # 第二步:将特征类型转为列,实现并排展示
  pivot_wider(
    names_from = feature,
    values_from = value
  ) %>%
  # 可选:将盆号转为整数类型
  mutate(pot_number = as.integer(pot_number))

结果说明

处理后的数据集结构:

  • 保留treatment、block、pot_number标识列
  • branching、rooting、height、weight四组特征并排展示,每一行对应一个处理-区组-盆号的完整观测值

适配不同列名格式

如果你的列名是branching1、rooting_2这类特征在前、数字在后的格式,只需调整names_pattern和names_to的顺序:

df_processed <- df %>%
  pivot_longer(
    cols = -c(treatment, block),
    names_pattern = "(branching|rooting|height|weight)_?(\\d+)",
    names_to = c("feature", "pot_number"),
    values_to = "value"
  ) %>%
  pivot_wider(names_from = feature, values_from = value) %>%
  mutate(pot_number = as.integer(pot_number))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:40:25