So konvertieren sie eine liste in einen datenrahmen in r
Es gibt viele Fälle, in denen Sie möglicherweise eine Liste in einen Datenrahmen in R konvertieren möchten. In diesem Tutorial werden drei verschiedene Möglichkeiten erläutert, dies zu tun.
Methode 1: R-basiert
Der folgende Codeausschnitt zeigt, wie eine Liste nur mit Basis-R in einen Datenrahmen konvertiert wird:
#create list my_list <- list(letters[1:5], letters[6:10]) my_list [[1]] [1] "a" "b" "c" "d" "e" [[2]] [1] "f" "g" "h" "i" "j" #convert list to data frame data.frame(t(sapply(my_list,c))) X1 X2 X3 X4 X5 1 abcde 2 fghij
In diesem Beispiel wandelt sapply die Liste in eine Matrix um, dann wandelt data.frame die Matrix in einen Datenrahmen um. Das Endergebnis ist ein Datenrahmen mit zwei Zeilen und fünf Spalten.
Methode 2: DataTable
Der folgende Codeausschnitt zeigt, wie man eine Liste aus zwei verschachtelten Listen mithilfe der rbindlist- Funktion der data.table- Bibliothek in einen Datenrahmen mit zwei Zeilen und drei Spalten umwandelt:
#load data.table library library(data.table) #create list my_list <- list(a = list(var1 = 1, var2 = 2, var3 = 3), b = list(var1 = 4, var2 = 5, var3 = 6)) my_list $a $a$var1 [1] 1 $a$var2 [1] 2 $a$var3 [1] 3 $b $b$var1 [1] 4 $b$var2 [1] 5 $b$var3 [1] 6 #convert list to data frame rbindlist(my_list) var1 var2 var3 1:1 2 3 2:4 5 6
Dadurch entsteht eine Datentabelle mit zwei Zeilen und drei Spalten. Wenn Sie diese Datentabelle in einen Datenrahmen konvertieren möchten, können Sie einfach as.data.frame(DT) verwenden.
Diese Methode wandelt eine Liste schneller in einen Datenrahmen um als die vorherige Methode, wenn Sie mit einem sehr großen Datensatz arbeiten.
Methode 3: Dplyr
Der folgende Codeausschnitt zeigt, wie man eine Liste aus zwei verschachtelten Listen mithilfe der bind_rows- Funktion der dplyr- Bibliothek in einen Datenrahmen mit zwei Zeilen und drei Spalten umwandelt:
#loadlibrary library(dplyr) #create list my_list <- list(a = list(var1 = 1, var2 = 2, var3 = 3), b = list(var1 = 4, var2 = 5, var3 = 6)) my_list $a $a$var1 [1] 1 $a$var2 [1] 2 $a$var3 [1] 3 $b $b$var1 [1] 4 $b$var2 [1] 5 $b$var3 [1] 6 #convert list to data frame bind_rows(my_list) # A tibble: 2 x 3 var1 var2 var3 1 1 2 3 2 4 5 6
Dadurch entsteht ein Datenrahmen mit zwei Zeilen und drei Spalten.
Bei der Arbeit mit großen Datensätzen ist diese Methode tendenziell auch schneller als Basis-R.