2017-09-01 1 views
-1

Ich arbeite an Umfragedaten mit 512 Variablen. Die Anzahl der Variablen ist hoch, da jeder Befragte die gleiche Frage für mehrere Marken beantwortet. So hat jede Variable, zum Beispiel "Präferenz" 20 Spalten, für jede Marke, die ein Befragter möglicherweise wissen könnte. Ich möchte eine zusätzliche Spalte, die Marke ist, und das habe ich noch nicht geschafft.Breites bis langes Format mit Tidyr

angewendet ich das tidyr Paket und das funktioniert sehr gut für den ersten Satz von Variablen:

TestSet100<-as.data.frame(TestSet100) 
TestSet100$ID <- factor(TestSet100$ID) 
Test_long<-reshape(TestSet100long, varying=c(unaided_b1:unaided_b20), direction="long", idvar= "ID", sep="_") 

Das Ergebnis ist genau das, was ich brauche. Aber geht es falsch, sobald ich mit der nächsten beginnen:

TestSet100long3<-gather(TestSet100long, brand, aided_awareness, aided_b1:aided_b20, factor_key=T) 

Denn dann fügt hinzu: Marke unaided_awareness, Marke aided_awareness, anstelle einer Spalte mit der variablen Marke, und zwei mit unaided_awareness und aided_awareness.

Aber mit dem dritten geht es völlig falsch, denn dann ist das Ergebnis ein Fehler.

TestSet100long4<-gather(TestSet100long3, brand, familiarity, fami_b1:fami_b20, factor_key=T) 
Error: is_dictionaryish(x) is not TRUE 
+1

Können Sie ein [minimal reproduzierbares Beispiel] (https://stackoverflow.com/questions/5963269/how-to -make-a-great-r-reproduzierbar-Beispiel) Ihres Datasets? Es würde uns die Fehlerbehebung Ihres Codes erleichtern. –

Antwort

0

dcast von reshape2 Paket versuchen. Weitere Informationen finden Sie unter An introduction to reshape2. Am unteren Ende dieses Blogposts gibt es eine schöne visuelle Tabelle mit blau/roten Hervorhebungen, die die Logik schön erklären

Verwandte Themen