Ich habe einen Datensatz, der dem folgenden Bild ähnelt. Insgesamt sind es über 1000 Beobachtungen. Ich möchte einen neuen Datenrahmen erstellen, der die einzelne Variable in 3 Variablen trennt. Jede Variable wird bei jeder Beobachtung durch ein "+" getrennt, so dass sie getrennt werden muss, indem sie als Faktor verwendet wird.Bearbeiten eines Datensatzes durch Trennen von Variablen
Antwort
Hier ist eine Lösung mit data.table
:
library(data.table)
# Data frame
df <- data.frame(MovieId.Title.Genres = c("yyyy+xxxx+wwww", "zzzz+aaaa+aaaa"))
# Data frame to data table.
df <- data.table(df)
# Split column into parts.
df[, c("MovieId", "Title", "Genres") := tstrsplit(MovieId.Title.Genres, "\\+")]
# Print data table
df
Ich benutze Rstudio, ich bin mir nicht sicher, ob data.table hier verfügbar ist, aber ich kann nicht darauf zugreifen mit Bibliotheksfunktion –
Sie können das Paket von CRAN mit 'installieren install.packages ("data.table") '. – 67342343
Haben Sie es .. aber wie kann ich es auf den angegebenen Datenrahmen anwenden? –
Ich gehe davon aus, dass Ihr movieData
Objekt ist eine einzelne Spalte data.frame Objekt.
Wenn Sie ein einzelnes Element aus dem Datensatz teilen möchten, verwenden Sie strsplit
den Charakter mit +
(die R will als "\\+"
sehen geschrieben):
# split the first element of movieData into a vector of strings:
strsplit(as.character(movieData[1,1]), "\\+")
Verwenden lapply
anzuwenden dies auf die gesamte Spalte , dann massieren Sie die resultierende Liste in eine schöne, verwendbar data.frame:
# convert to a list of vectors:
step1 = lapply(movieData[,1], function(x) strsplit(as.character(x), "\\+"))
# step1 is a list, so make it into a data.frame:
step2 = as.data.frame(step1)
# step2 is a nice data.frame, but its names are garbage. Fix it:
movieDataWithColumns = setNames(step2, c("MovieId", "Title", "Genres"))
Das alles macht Sinn, außer ich bekomme einen Fehler, wenn ich es ausführe .. Es sagt mir, wenn es zu dem Teil kommt, der mit "step2" beginnt .....: Fehler in (Funktion (..., Zeile .names = NULL, check.rows = FALSE, check.names = TRUE,: Argumente bedeuten unterschiedliche Anzahl von Zeilen: 3, 2, 1 –
Können Sie die Filmdaten in Ihrem Beispiel angeben? pasteable code mit 'dput (movieData)' – lebelinoz
http://stat.slu.edu/~speegle/project1Files/movies.dat –
- 1. Montage eines Datensatzes von AWS
- 2. Altern eines Datensatzes
- 3. Trennen Komma delimeted Werte von einer Variablen
- 4. Erstellen eines Datensatzes
- 5. Sqlite Aktualisieren eines Datensatzes
- 6. Durchsuchen eines HDF5-Datensatzes
- 7. Etikettieren eines gestapelten Datensatzes
- 8. Schleife durch eine Liste der Werte eines bestimmten Datensatzes
- 9. Aktiver Datensatz has_many: Durch Entfernen eines verknüpften Datensatzes
- 10. Extrahiere das zweite Feld eines durch Pipe getrennten Datensatzes
- 11. Mehrere Instanzen eines Datensatzes auswählen
- 12. Python: Textdatei bearbeiten durch Eingabe von tkinter
- 13. Verständnis Shannon Entropie eines Datensatzes
- 14. Beibehalten eines Datensatzes von SQL-Einfügungen
- 15. Redux-Formularliste zum Anzeigen von vielen und Redu-Form zum Bearbeiten eines Datensatzes. Mein Entwurfsproblem
- 16. Iteratation durch Variablen eines Objekt (Java)
- 17. Eloquent: Count eines bestehenden Datensatzes
- 18. zum Abrufen eines bestimmten Datensatzes
- 19. kippe trennen richtig durch preg_split
- 20. Zeichenkette für Zeichenkette trennen und durch Komma trennen in C#
- 21. Durchführen eines variablen sqlite3-Updates durch PHP
- 22. Größe eines einzelnen Datensatzes? SQL
- 23. Polymorphe Assoziation, Erstellen eines Datensatzes
- 24. Codierung eines Datensatzes mit Protobuff
- 25. Erzwingen eines Datensatzes in PureScript
- 26. Aktualisieren eines Datensatzes mit SQL
- 27. Kopieren eines Datensatzes in VBA
- 28. Löschen eines Datensatzes (mit GridView)
- 29. Replizieren eines Datensatzes in Orakel
- 30. Drucken eines Datensatzes in Javascript
https://i.stack.imgur.com/VIWzF.jpg –
'umformen :: colsplit (colname, Split = "+" , Namen = c ("name1", "name2", "n ame3 "))' – Craig
Mögliches Duplikat von [R: Wie spalte ich eine bestimmte Spalte anhand des Symbols in R?] (http://stackoverflow.com/questions/5610041/r-how-to-split-a-specific- spaltenbasiert-auf-symbol-in-r) – PereG