2016-04-28 4 views
-3

In diesem Beispiel haben drei Personen 10 Elemente in eine variable Anzahl von Gruppen sortiert und für jede Gruppe eine Beschriftung angegeben. Person und Label sind Textfelder. Item var beim Herunterladen und Lesen in R wird als Integer gelesen. Elementvariable ist eigentlich kategorische Daten und definiert Text für den Artikel; Eine Artikelnummer für einen Test ist eine gute Analogie. Etiketten, Artikel und Personen können in beliebiger Reihenfolge angeordnet sein. Normalerweise sortiere ich die Daten so, wie Sie es hier sehen, um eine visuelle Kontrolle zu ermöglichen. Jede Person hat 10 Punkte in diesem Beispiel, in der realen Welt gibt es normalerweise 100 Punkte. Jede Person hat eine variable Anzahl von Labels. Jedes Etikett hat eine variable Anzahl von Elementen. Alle Artikel sind mit einem und nur einem Label verbunden und alle Artikel (1-10 in diesem Beispiel) erscheinen einmal für jede Person, es fehlen keine Daten.R-Code - Daten neu strukturieren, drei Spalten mit gestapelten Daten in Zeilen

Person Gruppenelement

PERSON_1 label_A 1

PERSON_1 label_A 2

PERSON_1 label_A 3

PERSON_1 label_A 4

PERSON_1 label_B 5

PERSON_1 label_B 6

PERSON_1 label_C 7

PERSON_1 label_C 8

PERSON_1 label_C 9

PERSON_1 label_C 10

PERSON_2 label_D 1

PERSON_2 label_D 2

PERSON_2 label_D 3

PERSON_2 label_D 4

... verbleibenden Zeilen der Kürze halber weggelassen

ich die Daten müssen in das Format neu strukturiert, die folgt. Jede Zeile ist eine Label-Variable mit den zugehörigen Elementen, Labels befinden sich auf einer und nur einer Zeile. Jede Person wird so oft wiederholt, wie sie einzigartige Etiketten haben. Ich habe Stack-Überlauf gesucht und mehrere Versuche mit Umformen und Tidyr gemacht, das Beste, was ich produzieren kann, ist eine rechteckige binäre Matrix, in der Einsen oder Nullen im Datenrahmen mit einer Spalte für Person und Label und dann 10 Spalten mit der Bezeichnung 1:10 stehen für jeden Wert in diesem Beispiel. Ich kann nachbearbeiten, um zu bekommen, was ich in Excel will, aber würde lieber alles in R erledigen, ich brauche den tatsächlichen Artikelwert in der Spalte, wie hier gezeigt. Idealerweise würde der maximale ncol jeweils eins für peson & Label und so viele wie nötig sein, um die Sortierung darzustellen. Person3, label_H benötigte 7 col für Elemente, so dass in dieser Spalte oder anderen Zeilen NA oder 0 sein konnte. Jede Hilfe würde am meisten geschätzt werden, kann ich normalerweise die Antwort finden, die ich auf StackOverflow brauche, dieses Mal bin ich ratlos.

Person Gruppenelemente

PERSON_1 label_A 1 2 3 4
PERSON_1 label_B 5 6
PERSON_1 label_C 7 8 9 10
PERSON_2 label_D 1 2 3 4
PERSON_2 label_E 5 6 7
person_2 label_F 8 9 10
person_3 label_G 1 2 3
person_3 label_H 4 5 6 7 8 9 10

+1

Sie alles versucht haben? –

+1

Bitte zeigen Sie, was Sie versucht haben. – Heroka

Antwort

0

Ich bin mir nicht sicher, ob ich die Frage vollständig verstanden habe. Schließlich suchen Sie etwas wie folgt aus:

df <- read.table(header=TRUE, text= 
"person group item 
person_1 label_A 1 
person_1 label_A 2 
person_1 label_A 3 
person_1 label_A 4 
person_1 label_B 5 
person_1 label_B 6 
person_1 label_C 7 
person_1 label_C 8 
person_1 label_C 9 
person_1 label_C 10 
person_2 label_D 1 
person_2 label_D 2 
person_2 label_D 3 
person_2 label_D 4") 
df2 <- unique(df[-3]) 
split(df$item, list(df$person, df$group), drop=TRUE) 
df2$L <- split(df$item, list(df$person, df$group), drop=TRUE) 
df2 

Ergebnis:

#> df2 
#  person group   L 
#1 person_1 label_A 1, 2, 3, 4 
#5 person_1 label_B  5, 6 
#7 person_1 label_C 7, 8, 9, 10 
#11 person_2 label_D 1, 2, 3, 4 
Verwandte Themen