La funzione spread di tidyr prende solo i nomi delle colonne senza virgolette. C'è un modo posso passare in una variabile che contiene il nome di colonna per esempioCome può la funzione tidyr spread assumere come variabile una colonna
# example using gather()
library("tidyr")
dummy.data <- data.frame("a" = letters[1:25], "B" = LETTERS[1:5], "x" = c(1:25))
dummy.data
var = "x"
dummy.data %>% gather(key, value, var)
Questo dà un errore
Error: All select() inputs must resolve to integer column positions.
The following do not:
* var
Che viene risolto utilizzando funzione match che dà la colonna desiderata posizione
dummy.data %>% gather(key, value, match(var, names(.)))
Ma questo stesso approccio non funziona per la funzione di diffusione
dummy.data %>% spread(a, match(var, names(.)))
Error: Invalid column specification
Le funzioni di raccolta e diffusione richiedono specifiche di colonna diverse. raccogliere prende un indice di colonna, mentre la diffusione non menziona ciò che vuole
avviso che lo spread accetta solo una colonna di valori. Se si desidera diffondere più colonne, è necessario modificarle (incollarle) in una sola e successivamente distribuirle. – dalloliogm
Forse vuoi 'spread_'? Prende le stringhe per entrambe le colonne chiave e valore, però. – aosmith