R:拆开表格以减少尺寸

时间:2018-12-03 17:00:01

标签: r

我有一个看起来像这样的数据框:

x1 <- read.table(header=T, text="
Batch   Parameter   V1  V2  V3  V4  V5
Batch1  Parameter1  a   b   c   d   e
Batch1  Parameter2  f   h   i   j   k
Batch1  Parameter3  l   m   n   o   p
             ")

我想重新格式化(取消堆栈?)以获得此输出:

a <- c("Batch", "Parameter1 V1",    "Parameter1 V2",    "Parameter1 V3",     
"Parameter1 V4",    "Parameter1 V5",    "Parameter2 V1",    "Parameter2 V2",     
"Parameter2 V3",    "Parameter2 V4",    "Parameter2 V5")
b <- c("Batch1","a", "b", "c", "d", "e", "f", "h", "i", "j", "k")

x2 <- rbind(a,b)

我尝试使用unstack():

x3 <- unstack(x1, x1$Batch+x1$Parameter~V1:V5)

但这不会产生所需的输出。

任何帮助将不胜感激

W。

1 个答案:

答案 0 :(得分:0)

require(tidyr)
require(dplyr)
x1 %>% 
 gather("V","value",V1:V5) %>% 
 mutate(Parameter=paste0(Parameter,".",V)) %>% 
 select(-V) %>% 
 spread(Parameter,value)

由于要以所有参数和V的组合的最后一行结束,因此首先要创建所有这些参数的一种longdata格式-从那里很容易将其spread转换为宽格式。 / p>

   Batch Parameter1.V1 Parameter1.V2 Parameter1.V3 Parameter1.V4 Parameter1.V5 Parameter2.V1
1 Batch1             a             b             c             d             e             f
  Parameter2.V2 Parameter2.V3 Parameter2.V4 Parameter2.V5 Parameter3.V1 Parameter3.V2 Parameter3.V3
1             h             i             j             k             l             m             n
  Parameter3.V4 Parameter3.V5
1             o             p