Использование dplyr или tidyr для преобразования таблицы - PullRequest
0 голосов
/ 07 мая 2018

У меня есть этот фрейм данных

group = c("A","B","C")
num = c(1,2,3)
calc1 = c(4,5,6)
calc2 = c(7,8,9)
temp = c("GG","HH","KK")
temp2 = c("ll","pp","rr")
library(dplyr)
dat =data.frame(group = group, num = num , calc1 = calc1, calc2 = calc2, temp = temp, temp2 = temp2)
dat

  group num calc1 calc2 temp temp2
1     A   1     4     7   GG    ll
2     B   2     5     8   HH    pp
3     C   3     6     9   KK    rr

и я хотел бы переставить данные так, чтобы таблица выглядела как столбец метрики с num, calc1 и calc2 и columnw со значением group и удалением временных столбцов:

metric      A      B    C
num         1      2    3
calc1       4      5    6 
calc2       7      8    9

Какой лучший способ сделать это?

1 Ответ

0 голосов
/ 07 мая 2018

Drop temp столбцы, gather, а затем spread:

library(dplyr); library(tidyr)

dat %>% 
    select(-starts_with('temp')) %>% 
    gather(metric, val, -group) %>% 
    spread(group, val)

#  metric A B C
#1  calc1 4 5 6
#2  calc2 7 8 9
#3    num 1 2 3
...