如何将R语言中含MEAN/MED后缀的数据集重塑为指定长格式
R数据格式转换解决方案
原始数据
df <- data.frame(Group = c("a", "b"), MEAN_A = 1:2, MEAN_B = 3:4, MED_A = 5:6, MED_B = 7:8)
转换代码
使用tidyr包的pivot_longer函数,通过正则表达式拆分列名并重组结构:
library(tidyr) library(dplyr) result <- df %>% pivot_longer( cols = -Group, # 保留Group列,处理其余所有列 names_to = c("Name", ".value"), # 拆分列名为类别列(Name)和值列标识 names_pattern = "(.*)_(.*)" # 正则匹配下划线前后的两部分内容 ) %>% rename(Value_A = A, Value_B = B) # 重命名列名以匹配需求格式
输出结果
print(result) # Group Name Value_A Value_B # 1 a MEAN 1 3 # 2 a MED 5 7 # 3 b MEAN 2 4 # 4 b MED 6 8
关键参数说明
names_to = c("Name", ".value"):.value是特殊占位符,代表拆分出的第二部分作为新值列的名称,而非存入普通数据列names_pattern = "(.*)_(.*)":用括号捕获下划线分隔的两段内容,第一段对应Name列的MEAN/MED类别,第二段对应值列的A/B标识
内容的提问来源于stack exchange,提问作者TobiSonne
相关产品推荐
相关产品推荐

