Hoe een lijst naar een dataframe te converteren in r


Er zijn veel gevallen waarin u een lijst naar een dataframe in R wilt converteren. In deze tutorial worden drie verschillende manieren uitgelegd om dit te doen.

Methode 1: R-gebaseerd

Het volgende codefragment laat zien hoe u een lijst naar een dataframe converteert met alleen basis R:

 #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 dit voorbeeld converteert sapply de lijst naar een matrix en vervolgens converteert data.frame de matrix naar een dataframe. Het eindresultaat is een dataframe met twee rijen en vijf kolommen.

Methode 2: Gegevenstabel

Het volgende codefragment laat zien hoe u een lijst van twee geneste lijsten kunt converteren naar een dataframe met twee rijen en drie kolommen met behulp van de rbindlist- functie van de data.table- bibliotheek:

 #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

Dit resulteert in een gegevenstabel met twee rijen en drie kolommen. Als u deze gegevenstabel naar een dataframe wilt converteren, kunt u eenvoudigweg as.data.frame(DT) gebruiken.

Deze methode converteert een lijst sneller naar een dataframe dan de vorige methode als u met een zeer grote dataset werkt.

Methode 3: Dplyr

Het volgende codefragment laat zien hoe u een lijst van twee geneste lijsten kunt converteren naar een dataframe met twee rijen en drie kolommen met behulp van de functie bind_rows van de dplyr- bibliotheek:

 #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

Dit resulteert in een dataframe met twee rijen en drie kolommen.

Deze methode heeft ook de neiging sneller te presteren dan basis R bij het werken met grote datasets.

Einen Kommentar hinzufügen

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