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

基于列名拆分的宽表数据重塑问题及R语言解决方法

列名拆分重塑表格的R实现

问题背景

我有一份外部分析程序输出的数据,为单行长表格式,列名类似Root.a、node359.a,共有数千列。需要将其重塑为以原列名前缀为行名、后缀为新列名的表格,且不想使用apply或循环,同时不依赖固定列名。

解决步骤与代码

通过R语言的pivot_longer、pivot_wider函数结合自定义赋值完成需求,具体如下:

# 将表格转为长格式
testnodes <- nodes %>%
  pivot_longer(
    everything(),
    cols_vary = "slowest",
    names_to = c("node","behavior"),
    names_pattern = "(.).(.)." ## 原始输出的列名各部分间用点分隔,第一个(.)是节点名,第二个(.)是行为标记(A到M)
  )
# 这一步得到的表格有点奇怪,会拆分每个单词的字母,但所有内容顺序是对的

# 生成节点名和行为标记的字符串向量
# 将节点名赋值给testnodes的第一列
testnodes$node <- names
# 将行为字母赋值给testnodes的第二列
testnodes$behavior <- string_rep

长格式表格预览

> head(testnodes)
# A tibble: 6 × 3
  node  behavior   value
  <chr> <chr>      <dbl>
1 Root  A        0.0142 
2 Root  B        0.0581 
3 Root  C        0.0203 
4 Root  D        0.873  
5 Root  E        0.0215 
6 Root  F        0.00653
# 转换回宽格式表格
testnodes_w <- testnodes %>%
  pivot_wider(
    names_from = behavior,
    values_from = value
  )

最终宽格式表格预览

> head(testnodes_w)
# A tibble: 6 × 14
  node             A       B       C       D       E       F       G       H       I       J       K       L
  <chr>        <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
1 Root       1.42e-2 5.81e-2 2.03e-2 8.73e-1 2.15e-2 0.00653 0.00158 0.00307 1.26e-4 0.00034 0       3.60e-5
2 Outgroup   2.12e-2 2.30e-2 5.37e-2 2.27e-2 3.95e-2 0.0418  0.0297  0.0463  3.92e-2 0.0340  2.88e-1 3.36e-2
3 Ceropalini 4.26e-4 5.06e-4 4.07e-3 1.78e-4 5.88e-4 0.00738 0.00107 0.00521 3.22e-3 0.00550 1.2 e-3 9.59e-1
4 Ctenoceri… 2.97e-1 4.62e-2 2.86e-3 4.93e-1 3.98e-4 0.00733 0.137   0.00570 6.39e-4 0.00762 0       1.8 e-4
5 Dipogon1   3.17e-1 2.98e-2 2.60e-1 1.45e-1 6.20e-2 0.0175  0.112   0.0192  5.83e-3 0.0193  2.26e-3 3.39e-3
6 Minagenia  1.21e-4 2.3 e-5 8.18e-4 1.45e-4 7.1 e-5 0.00299 0.00162 0.00379 9.88e-1 0.00122 7.20e-5 5   e-4
# ℹ 还有1个变量: M <dbl>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:47:39