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

R语言:如何将指定前缀列合并为单列并展开成行

解决方案

你需要的是将宽格式数据转换为长格式,用tidyr包的pivot_longer()函数就能完美实现,替代unite()合并单元格的方式。

代码实现

首先确保安装并加载tidyverse包(包含tidyr):

# 首次使用时安装包
install.packages("tidyverse")

# 加载包
library(tidyverse)

# 你的原始数据框
Sex <- c("F", "F", "M", "M", "F")
Phenotype <- c("Control", "Experimental", "Experimental", "Control", "Control")
MOp_Amygdala <- c(10, 15, 2, 10, 8)
MOp_Thalamus <- c(11, 16, 3, 11, 9)
MOp_Cerebellum <- c(9, 14, 1, 9, 7)
MOq_Cortex <- c(8, 11, 1, 8, 6)
MOq_Striatum  <- c(6, 9 , 8, 6, 8)

df <- data.frame(Sex, Phenotype, MOp_Amygdala, MOp_Thalamus, MOp_Cerebellum, MOq_Cortex, MOq_Striatum)

# 转换数据格式
df_transformed <- df %>%
  pivot_longer(
    cols = starts_with("MOp"),  # 匹配所有以MOp开头的列
    values_to = "Primary Motor Cortex"  # 指定新列名称
  )

转换后效果

转换后的df_transformed会生成15行(5个样本×3个MOp列),每个MOp列的数值单独成行,同时重复对应样本的Sex、Phenotype、MOq_Cortex和MOq_Striatum值,示例输出前几行如下:

# A tibble: 15 × 5
  Sex   Phenotype     MOq_Cortex MOq_Striatum `Primary Motor Cortex`
  <chr> <chr>              <dbl>        <dbl>                  <dbl>
1 F     Control                8            6                     10
2 F     Control                8            6                     11
3 F     Control                8            6                      9
4 F     Experimental          11            9                     15
5 F     Experimental          11            9                     16
6 F     Experimental          11            9                     14

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:45:01