Ich suchte nach einer Möglichkeit, den Spalteninhalt durch ein Trennzeichen aufzuteilen und eine Tabelle in ein langes Format umzuwandeln. Ich habe cSplit
aus dem Paket splitstackshape
gefunden und es macht fast das, wonach ich gesucht habe.
Problem ist jetzt mit der Option drop
. Ich habe erwartet, dass meine Split-Spalte in gewisser Weise kopiert wird, aber das passiert nicht. Mache ich es falsch? Jemand hat das Problem erlebt?
Ich bin mir nicht sicher, ob ich etwas falsch mache, aber die Option drop = FALSE
funktioniert in meinem Fall nicht.
Hier ist ein Beispiel:
%Vor%Was ich erwartet habe, war so etwas:
%Vor%Ich verwende Version 1.4.2
Das Format "long" ändert die Spalte mit list(unlist(...))
in "data.table", zugewiesen mit :=
. Wenn also drop
verwendet würde, würden Sie die Spalte aufteilen und dann entfernen!
Ich werde versuchen, es in der Dokumentation explizit zu machen, dass drop
nur für das wide
-Format ist, oder fügen Sie message
hinzu, wenn ein Benutzer versucht, drop
im langen Format zu verwenden. Fühlen Sie sich frei, einen FR einzureichen oder einen PR einzureichen .
Die Umgehungslösung würde darin bestehen, eine andere Spalte (zB "a_orig") zuzuweisen und dann die Aufteilung durchzuführen:
%Vor%Ich habe nicht ausführlich getestet, aber eine mögliche Lösung könnte sein:
%Vor% Die Grundidee besteht darin, das Eingabe-Dataset nur zu ändern, wenn direction == "wide"
und drop = FALSE
. Dies ähnelt der Idee, die Sie hatten, aber kann möglicherweise die Lösung sein, die in das eigentliche Paket integriert ist, irgendwo um Zeile 94 . In diesem Fall sollte nur der indt[, ':='(eval(paste(splitCols, "orig", sep = "_")), lapply(splitCols, function(x) indt[[x]]))]
-Teil notwendig sein.
Danke für das Feedback, ich habe eine kleine Funktion als Workaround geschrieben.
Ich musste data.table
in data.frame
ändern, damit es richtig funktioniert. Im Fall von data.table
muss ich einen zusätzlichen Parameter setzen, der jedoch mit data.frame
abstürzt. In meinem Fall brauche ich die meiste Zeit data.frame
, also habe ich es dafür optimiert.
Tags und Links r splitstackshape