Here is a simple tutorial on how to unlist a nested list with the help of R. Problems may appear when nested lists are a different length for each record. For example, chat sessions and corresponding lists of conversations that differ in length.
Here is all code altogether and additional explanations below.
# create data frame with nested list df <- data.frame("sales person" = c("Janis", "Ivo"), "sales" = c(1000, 500)) nested_list <- list(list("comments" = c("Comment1", "Comment2")), list("comments" = c("Comment1", "Comment2", "Comment3", "Comment4")) ) df_and_list <- mutate(df, nested_list ) require(data.table) require(dplyr) # unlist nested list with id unlisted <- rbindlist(df_and_list$nested_list, fill = T, idcol = "id") # create same id in remaining data frame df_and_list$id <- seq.int(nrow(df_and_list)) # join data frame with unlisted list df_and_list <- left_join(df_and_list, unlisted, by = "id") #get rind of unnecessary columns df_and_list$nested_list <- NULL df_and_list$id <- NULL
Create a simple data frame with a nested list.
# create data frame with nested list df <- data.frame("sales person" = c("Janis", "Ivo"), "sales" = c(1000, 500)) nested_list <- list(list("comments" = c("Comment1", "Comment2")), list("comments" = c("Comment1", "Comment2", "Comment3", "Comment4")) ) df_and_list <- mutate(df, nested_list )
Unlist nested list in R
With the help of package data.table function rbindlist creates a data frame with an unlisted nested list column. Add the id column, which is a key that shows the previous data frame row.
require(data.table) require(dplyr) # unlist nested list with id unlisted <- rbindlist(df_and_list$nested_list, fill = T, idcol = "id")
Create a row id column in the first data frame.
# create same id in remaining data frame df_and_list$id <- seq.int(nrow(df_and_list))
Join the first data frame and unlisted list data frame together.
# join data frame with unlisted list df_and_list <- left_join(df_and_list, unlisted, by = "id")
Here is another post dedicated to lists.
Leave a Reply