R: Разблокировать таблицу, чтобы уменьшить размерность - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть кадр данных, который выглядит следующим образом:

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
             ")

Я хотел бы переформатировать (unstack?), Чтобы получить этот вывод:

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 голосов
/ 03 декабря 2018
require(tidyr)
require(dplyr)
x1 %>% 
 gather("V","value",V1:V5) %>% 
 mutate(Parameter=paste0(Parameter,".",V)) %>% 
 select(-V) %>% 
 spread(Parameter,value)

Так как вы хотите получить одну строку всех комбинаций параметров и V, вы начинаете с создания одного формата longdata для всех из них - и оттуда легко spread перевести его в широкий формат.

   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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...