R 如何使用添加的因子名称将宽格式转换为长格式

R 如何使用添加的因子名称将宽格式转换为长格式,r,R,我想将宽格式数据(示例名称放在列名中)转换为长格式数据(示例名称中添加了一列) 见示例: df <-data.frame(Assay=c("alpha","beta","theta"), One_mean =c(3,4,5), Two_mean =c(6,7,8), Three_mean =c(8,8,8),

我想将宽格式数据(示例名称放在列名中)转换为长格式数据(示例名称中添加了一列)

见示例:

df <-data.frame(Assay=c("alpha","beta","theta"),
                One_mean    =c(3,4,5), 
                Two_mean    =c(6,7,8), 
                Three_mean  =c(8,8,8),
                One_plus    =c(1.3,1.4,1.5), 
                Two_plus    =c(1.6,1.7,1.8), 
                Three_plus  =c(1.8,1.8,1.8),
                One_minus   =c(.3,.4,.5), 
                Two_minus   =c(.6,.7,.8), 
                Three_minus =c(.8,.8,.8))

df我们可以使用
pivot\u更长的时间

library(tidyr)
pivot_longer(df, cols = -Assay, names_to = c("Sample", ".value"), names_sep = '_')
-输出

# A tibble: 9 x 5
#  Assay Sample  mean  plus minus
#  <chr> <chr>  <dbl> <dbl> <dbl>
#1 alpha One        3   1.3   0.3
#2 alpha Two        6   1.6   0.6
#3 alpha Three      8   1.8   0.8
#4 beta  One        4   1.4   0.4
#5 beta  Two        7   1.7   0.7
#6 beta  Three      8   1.8   0.8
#7 theta One        5   1.5   0.5
#8 theta Two        8   1.8   0.8
#9 theta Three      8   1.8   0.8
#一个tible:9 x 5
#分析样品平均值加减
#       
#1阿尔法一号31.30.3
#2阿尔法2 6 1.6 0.6
#3阿尔法3 81.80.8
#4 beta One 4 1.4 0.4
#5 beta 2 7 1.7 0.7
#6 beta三级8 1.80.8
#7θ1 5 1.5 0.5
#8θ2 81.80.8
#9θ3 81.80.8

我们可以使用
pivot\u更长的时间

library(tidyr)
pivot_longer(df, cols = -Assay, names_to = c("Sample", ".value"), names_sep = '_')
-输出

# A tibble: 9 x 5
#  Assay Sample  mean  plus minus
#  <chr> <chr>  <dbl> <dbl> <dbl>
#1 alpha One        3   1.3   0.3
#2 alpha Two        6   1.6   0.6
#3 alpha Three      8   1.8   0.8
#4 beta  One        4   1.4   0.4
#5 beta  Two        7   1.7   0.7
#6 beta  Three      8   1.8   0.8
#7 theta One        5   1.5   0.5
#8 theta Two        8   1.8   0.8
#9 theta Three      8   1.8   0.8
#一个tible:9 x 5
#分析样品平均值加减
#       
#1阿尔法一号31.30.3
#2阿尔法2 6 1.6 0.6
#3阿尔法3 81.80.8
#4 beta One 4 1.4 0.4
#5 beta 2 7 1.7 0.7
#6 beta三级8 1.80.8
#7θ1 5 1.5 0.5
#8θ2 81.80.8
#9θ3 81.80.8

使用
reshpae的基本R选项

reshape(
  setNames(df, gsub("(\\w+)_(\\w+)", "\\2.\\1", names(df))),
  direction = "long",
  idvar = "Assay",
  varying = -1
)
给予


使用
reshpae

reshape(
  setNames(df, gsub("(\\w+)_(\\w+)", "\\2.\\1", names(df))),
  direction = "long",
  idvar = "Assay",
  varying = -1
)
给予