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

如何拆分R数据框列名下划线分隔元素并重组数据结构

实现方法

可以用tidyverse工具包快速完成这个转换,步骤如下:

  1. 拆分列名:将原数据框的列名按下划线拆分,提取前三个元素作为clm1、clm2、clm3,剩余部分作为值列的名称。
  2. 转置原数据:把原数据的列转换为行,让每一行对应原数据的一列。
  3. 合并数据:将拆分得到的clm1-clm3与转置后的数据合并,并设置正确的列名。

完整代码

# 加载所需包
library(tidyverse)

# 输入数据
df <- structure(list(post_name_mo_score = c("3433243juhy234_2323526", "3433243juhy234_2323526", 
"3433243juhy234_2323526"), minna_yout_qu_mai = c("3433243juhy234_2323526", 
"3433243juhy234_2323526", "3433243juhy234_2323526"), tour_sima_ta_tup = c("3433243juhy234_2323526", 
"3433243juhy234_2323526", "3433243juhy234_2323526")), class = "data.frame", row.names = c(NA, 
-3L))

# 拆分列名,提取clm1-clm3和值列名称
col_split <- str_split(colnames(df), "_", simplify = TRUE)
clm_info <- as_tibble(col_split[, 1:3], .name_repair = ~ c("clm1", "clm2", "clm3"))
value_col_names <- col_split[, 4]

# 转置原数据并合并clm信息
result <- bind_cols(
  clm_info,
  as_tibble(t(df)) %>% set_names(value_col_names)
)

# 查看结果
print(result)

运行结果

# A tibble: 3 × 6
  clm1  clm2  clm3  score                    mai                      tup                     
  <chr> <chr> <chr> <chr>                    <chr>                    <chr>                   
1 post  name  mo    3433243juhy234_2323526   3433243juhy234_2323526   3433243juhy234_2323526  
2 minna yout  qu    3433243juhy234_2323526   3433243juhy234_2323526   3433243juhy234_2323526  
3 tour  sima  ta    3433243juhy234_2323526   3433243juhy234_2323526   3433243juhy234_2323526  

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:10:54