2016-10-09 3 views
0

У меня есть таблица следующим образом.Как реструктурировать таблицу в R

A B C 
14.29 20.06 20.04 
19.10 20.64 26.23 
19.09 18.00 22.74 
16.25 19.56 22.04 
15.09 19.47 23.37 
16.61 19.07 25.02 
19.63 18.38 23.27 

Но я хочу повернуть стол так, чтобы это было так.

group time 
A 15.5 
A 16.5 
A 12.3 
A 15.6 
B 14.2 
B 13.5 
B 11.2 
C 11.5 
C 11.2 
C 11.8 

я упомянул функции Reshape() но у меня есть чувство, что это может быть неправильным инструментом для работы, потому что я получаю эту ошибку:

> x.long <- reshape(x, varying = 2:3, direction = "long") 
Error in guess(varying) : 
    failed to guess time-varying variables from their names 
> help(reshape) 
> x.long <- reshape(x, varying = 1:3, direction = "long") 
Error in guess(varying) : 
    failed to guess time-varying variables from their names 
> x.long <- reshape(x, varying = 0:2, direction = "long") 
Error in guess(varying) : 
    failed to guess time-varying variables from their names 
> x.long <- reshape(x, varying = 1, direction = "long") 
Error in guess(varying) : 
    failed to guess time-varying variables from their names 
> x.long <- reshape(x, varying = 1:7, direction = "long") 
Error in guess(varying) : 
    failed to guess time-varying variables from their names 
> x.long <- reshape(x, direction = "long") 
Error in reshape(x, direction = "long") : 
    no 'reshapeWide' attribute, must specify 'varying' 
> x.long <- reshape(x, direction = "wide") 
Error in `[.data.frame`(data, , timevar) : undefined columns selected 
> 
+0

Реорганизация не срабатывала при первой попытке, и это было слишком сложно, поскольку я верю в эту простую задачу. 'stack()' работал отлично для этого. – prab4th

ответ

0

Мы можем использовать stack из base R

setNames(stack(df1)[2:1], c("group", "time")) 

Или использовать melt из reshape2

library(reshape2) 
melt(df1, variable.name = "group", value.name = "time") 
+1

Это сработало, спасибо. Но так как было 3 группы, мне пришлось использовать 'stack (df1 [3: 1])' – prab4th