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

如何使用pivot_longer关联多列实现数据框宽表转长表?

解决方法

你需要同时处理成对的列(如A与TCLP_A、B与TCLP_B),可以通过pivot_longer的正则匹配功能关联对应的Chemical和两类浓度值,代码如下:

library(tidyr)

# 假设你的数据框是df
df %>%
  pivot_longer(
    cols = everything(),  # 选中所有列
    names_to = c(".value", "Chemical"),  # 第一捕获组对应值列名,第二组对应Chemical
    names_pattern = "(TCLP_)?(.*)"  # 正则匹配:可选的TCLP_前缀 + Chemical名称
  ) %>%
  rename(Concentration = `NA`)  # 将无前缀的列重命名为Concentration

代码解释:

  1. names_pattern = "(TCLP_)?(.*)":用正则表达式拆分列名,捕获两个部分:
    • 第一部分(TCLP_)?:匹配可选的"TCLP_"前缀(对应TCLP浓度列)
    • 第二部分(.*):匹配Chemical名称(A或B)
  2. names_to = c(".value", "Chemical"):指定第一捕获组作为值的列名(.value表示将这部分作为新的列名),第二捕获组作为Chemical列的内容
  3. **rename(Concentration = \NA`)**:没有"TCLP_"前缀的列会被分配到NA列,将其重命名为需要的Concentration`

运行后得到的结果如下:

ChemicalConcentrationTCLP
A10.1
B1010.1
A20.2
B2020.1

(若需要按Chemical排序,可追加arrange(Chemical)步骤)


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:33:13