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.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert