Ricevo un errore quando si tenta di utilizzare melt() su un dataframe contenente le Date

StackOverflow https://stackoverflow.com/questions/2831319

  •  26-09-2019
  •  | 
  •  

Domanda

Mi piacerebbe sciogliere il dataframe in modo che in una colonna ho date e in un secondo ho nome utente come variabile e, infine, il valore.

Ricevo questo errore:

Errore nel.Data.numerico(valore) :'origine' deve essere fornito

e mentre capisco l'errore io non sono esattamente sicuro di come ottenere intorno ad esso.

Un piccolo campione di dati è:

structure(list(created_at = structure(c(14007, 14008, 14009, 
14010, 14011, 14012), class = "Date"), benjamin = c(16, 0, 0, 
0, 0, 0), byron = c(0, 0, 0, 0, 0, 0), cameronc = c(0, 0, 0, 
0, 0, 0), daniel = c(0, 0, 0, 0, 0, 0), djdiaz = c(0, 0, 0, 0, 
0, 0), gene = c(16, 77, 64, 38, 72, 36), joel = c(0, 0, 0, 0, 
0, 2), kerem = c(0, 0, 0, 0, 0, 0), sophia = c(0, 0, 0, 0, 0, 
0), SuperMoonMan = c(0, 0, 0, 0, 0, 0)), .Names = c("created_at", 
"benjamin", "byron", "cameronc", "daniel", "djdiaz", "gene", 
"joel", "kerem", "sophia", "SuperMoonMan"), row.names = c(NA, 
6L), class = c("cast_df", "data.frame"))

Grazie per il vostro aiuto.

È stato utile?

Soluzione

Prova a convertire la variabile created_at in un vettore di carattere. melt, inoltre, non sembra come la classe cast_df, ma ho avuto successo reimpostando la classe ad appena data.frame. In questo modo:

df <- as.data.frame(df)
df$created_at <- as.character(df$created_at)
library(reshape)
melt(df)

Altri suggerimenti

Si l'errore è causato da rbind utilizzato in melt, che è conseguenza di dati errati a sciogliersi.Non so come si crea il tuo cast_df data.frame, ma non mancano gli attributi (idvars e rdimnames) che sono richiesti dalla melt.cast_df.

Che è il motivo per cui wkmor1 soluzione funziona, melt.data.frame non hai bisogno di questo argomenti.E senza conversione Date per character esso può essere fatto come:

df <- as.data.frame(df)
melt(df, id="created_at")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top