2014-09-30 9 views
5

Sto tentando di utilizzare gather nel pacchetto tidyr, ma non sono in grado di modificare i nomi delle colonne in uscita dai valori predefiniti nomi. Per esempio:Impossibile modificare i nomi di colonna emessi da "gather" per essere diversi dai nomi predefiniti

df = data.frame(time = 1:100,a = 1:100,b = 101:200) 
df.long = df %>% gather("foo","bar",a:b) 
colnames(df.long) 

mi dà

[1] "time"  "variable" "value" 

ma non dovrebbe essere "time" "foo" "bar"?

Posso cambiare "foo" e "bar" a qualsiasi cosa desideri e mi dà ancora "variabile" e "valore" come i nomi delle mie colonne.

Help. Cosa mi manca qui?

+0

Il tuo codice ha funzionato per me. Ho anche caricato 'dplyr'. –

+3

Ciao a tutti, il mio problema era che avevo caricato plyr e dplyr allo stesso tempo. Tutto quello che dovevo fare, è scrivere 'detach (" pacchetto: plyr ")' e il codice ha funzionato – dvdkamp

+0

@dvdkamp: Questo a volte potrebbe non funzionare specialmente quando dplyr potrebbe essere caricato tramite namespace. – KFB

risposta

2

Questo potrebbe essere un bug. Se sei disposto a provare altro, come melt() di data.table, puoi fare sotto:

# Need to load both data.table and reshape2 
# For more information, could check ?data.table 
library(reshape2); library(data.table) 
setDT(df) 
df %>% melt(id.vars = "time", variable.name = "foo", value.name = "bar") 

> First 20 rows 
    time foo bar 
1: 1 a 1 
2: 2 a 2 
3: 3 a 3 
4: 4 a 4 
5: 5 a 5 
6: 6 a 6 
7: 7 a 7 
8: 8 a 8 
9: 9 a 9 
10: 10 a 10 
11: 1 b 11 
12: 2 b 12 
13: 3 b 13 
14: 4 b 14 
15: 5 b 15 
16: 6 b 16 
17: 7 b 17 
18: 8 b 18 
19: 9 b 19 
20: 10 b 20 
Problemi correlati