我有一个看起来像这样的数据框:
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。
答案 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