Leute,
Ich bin mit der folgenden Herausforderung ratlos. Ich habe einen Datensatz, der so aussieht:
%Vor%Was ich tun möchte, ist, die Daten zu vereinfachen (wenn möglich) und die Variablen "Fruit" und "Amount" zu reduzieren
%Vor%Ich habe versucht, mit c () und rbind (), aber sie produzieren nicht die Ergebnisse, die ich will - ich habe den Tipp hier ausprobiert: data.frame-Zeilen zu einer Liste , aber ich bin mir nicht sicher, ob dies der beste Weg ist, meine Daten zu vereinfachen.
Dies ist so, dass es vermutlich einfacher für mich wäre, mit weniger Variablen zu handeln, um beispielsweise das Auftreten bestimmter Artikel zu zählen (z. B. kaufen 60% Käufer Banana).
Ich hoffe, das ist machbar - bin auch offen für irgendwelche Vorschläge. Irgendwelche Lösungen geschätzt!
Danke.
Versuch, Ihre Daten zu replizieren und data.table
zu verwenden %Vor%@RicardoSaporta edit:
Sie können den Umformungsschritt überspringen, wenn Sie möchten, indem Sie list(list(c(....)))
verwenden
Dies wird wahrscheinlich ein wenig Ausführungszeit sparen (der Nachteil ist, dass NA
s nicht Leerzeichen hinzugefügt werden). Wie @Marius jedoch betont, ist DTlong
oben wahrscheinlich leichter zu handhaben.
Hier eine Lösung mit Basispaket. Es ist wie Tyler Lösung, aber mit einer einzigen Anwendung.
%Vor%Ich würde auch die Indexnummer durch ein grep ändern, etwa so
%Vor%BEARBEITEN fügen Sie etwas Benchmarking hinzu.
%Vor%Für einen kleinen data.frame ist Tyler Rinker der Gewinner !! Wie ich das erkläre (nur raten)
Das ist eine wirklich schlechte Idee, aber hier ist es in der Basis data.frame
. Es funktioniert, weil data.frame
eigentlich eine Liste von Vektoren gleicher Länge ist. Sie können data.frame
zum Speichern von Vektoren in Zellen erzwingen, aber es braucht etwas Hackerei. Ich würde andere Formate vorschlagen, einschließlich Marius Vorschlag oder eine Liste.
Nachgeben:
%Vor%Hinzufügen zu den bereits vorhandenen großen Antworten, hier ist eine andere (Bleiben Sie auf Basis R):
%Vor%Das Grundkonzept lautet:
reshape
, um Ihre Daten in langer Form zu erhalten (wo Sie eigentlich aufhören sollten) aggregate
-Befehle, einen, um Ihre Fruchtspalten zu aggregieren, und einen, um Ihre Betragspalten zu aggregieren. Der Formelansatz von aggregate
kümmert sich darum, NA
zu entfernen, aber Sie können Ihr gewünschtes Verhalten mit dem Argument na.action
angeben. merge
, um die beiden zu kombinieren.