如何在R中将指定宽格式数据集转换为目标长格式?
R语言宽转长格式解决方案
要把给定的宽格式数据集转换为目标长格式,用tidyverse包的pivot_longer函数最便捷,操作步骤如下:
步骤1:加载工具包
library(tidyverse)
步骤2:执行格式转换
data_long <- data %>% pivot_longer( # 指定需要转换的列:所有EA开头和Score开头的列 cols = starts_with("EA") | starts_with("Score"), # 拆分列名规则:.value保留EA/Score作为新列名,Time提取数字部分 names_to = c(".value", "Time"), # 用正则匹配列名里的前缀和数字 names_pattern = "(EA|Score)(\\d)" ) %>% # 将EA列重命名为需求中的EAR rename(EAR = EA) %>% # 把Time转为整数类型 mutate(Time = as.integer(Time))
验证转换结果
查看转换后的前几行数据:
head(data_long)
输出示例:
# A tibble: 6 × 4 Flower EAR Time Score <int> <dbl> <int> <dbl> 1 1 1 1 9 2 1 4 2 15 3 1 8 3 12 4 1 12 4 9 5 2 1 1 10 6 2 5 2 12
转换后每个Flower对应4行数据,Time取值1-4,EAR和Score也与对应时间点完成匹配。
内容的提问来源于stack exchange,提问作者user330
相关产品推荐
相关产品推荐

