2015-06-21 15 views
5

Ich habe viele Daten auf Lager, aber auf eine seltsame Weise, die ich nicht finden konnte, ein Beispiel, wie Sie sie in die Ausgabe konvertieren, die hilfreich sein könnte. Hier ist ein Ausschnitt von DatenKonvertieren von Zeilen zu einem basierend auf einem allgemeinen Namen

stockname,value,prediction 
Yahoo,32,12 
Yahoo,21,12 
Yahoo,30,10 
Yahoo,56,19 
Google,32,10 
Google,22,30 

Ist es möglich, diesen Datenrahmen, um etwas zu konvertieren einfacher wie

stockname value1 value2 value3 value4 prediction1 prediction2 prediction3 prediction4 
Yahoo  32  21  30  56  12   12   10   19 
Google  32  22     10   10 

Antwort

4

Sie dcast aus der Entwick-Version data.table also versuchen. v1.9.5+, die mehrere value.var Spalten einnehmen können. Anweisungen, um die Entwick-Version zu installieren sind here

library(data.table)#v1.9.5+ 
setDT(df1)[, indx:=1:.N, stockname]#create a sequence index by stockname 
dcast(df1, stockname~indx, value.var=c('value', 'prediction')) 
# stockname value_1 value_2 value_3 value_4 prediction_1 prediction_2 
#1: Google  32  22  NA  NA   10   30 
#2:  Yahoo  32  21  30  56   12   12 
# prediction_3 prediction_4 
#1:   NA   NA 
#2:   10   19 
+0

Leider bis jetzt kann ich die Version # v1.9.5 installieren + vielleicht muss ich zuerst die Github installieren? – Ster32

+0

@ Stef32 Sie müssen 'Bibliothek (Devtools)' installiert zuerst – akrun

+0

Ja, ich habe es gemacht. Es hat installiert. Es gibt nur eine Warnung, um R-Tools zu installieren, aber ich habe es nicht geschafft. – Ster32

5

Dies ist ein einfaches Problem der Daten von „long“ auf „breit“ Umformung. Hier ist eine Basis R-Lösung reshape:

# load data 
d <- read.csv(text="stockname,value,prediction 
Yahoo,32,12 
Yahoo,21,12 
Yahoo,30,10 
Yahoo,56,19 
Google,32,10 
Google,22,30", header = TRUE) 

# create a time indicator variable 
d$t <- c(1:4, 1:2) 
# reshape 
reshape(d, idvar="stockname", direction="wide", timevar = "t") 
# stockname value.1 prediction.1 value.2 prediction.2 value.3 prediction.3 value.4 prediction.4 
# 1  Yahoo  32   12  21   12  30   10  56   19 
# 5 Google  32   10  22   30  NA   NA  NA   NA 
+0

wie ich verstehen kann d $ t ist die 4 Werte und 2 sind die zwei Zeilen im Ergebnis, das ich habe. Wie ich bereits erwähnt habe, ist dies ein Beispiel in dem Datensatz. Ich kenne die spezifische Anzahl der neuen Zeilen und Spalten nicht. – Ster32

+0

@ Ster32 Du hast das nirgendwo erwähnt. – Thomas

Verwandte Themen