Split Data Frame into List of Data Frames Based On ID Column in R (Example)
In this tutorial, I’ll explain how to separate a large data frame into a list containing multiple data frames in R.
The article looks as follows:
Let’s jump right to the example:
Creation of Exemplifying Data
Have a look at the following example data.
data <- data.frame(id = c("A", "A", "B", "B", "B", "C"), # Example data x1 = 1:6, x2 = 11:16) data # Print example data # id x1 x2 # 1 A 1 11 # 2 A 2 12 # 3 B 3 13 # 4 B 4 14 # 5 B 5 15 # 6 C 6 16
As you can see based on the previous RStudio console output, our example data contains six rows and three columns. The first variable is an ID-column that we can use to separate our data later on.
Example: Splitting Data Frame Based on ID Column Using split() Function
In this Example, I’ll show how to convert our data frame to a list of data frames using the split() function.
data_list <- split(data, f = data$id) # Split data data_list # Print list # $A # id x1 x2 # 1 A 1 11 # 2 A 2 12 # # $B # id x1 x2 # 3 B 3 13 # 4 B 4 14 # 5 B 5 15 # # $C # id x1 x2 # 6 C 6 16
The previous output shows our resulting list object. It contains three list elements and each of these list elements is a subset of our original data frame.
Video & Further Resources
Do you need further explanations on the R code of this article? Then you could have a look at the following video of my YouTube channel. I illustrate the R syntax of this article in the video:
The YouTube video will be added soon.
In addition, you may have a look at the related tutorials on my website:
- Convert Data Frame Rows to List
- Split Data Frame Variable into Multiple Columns
- split & unsplit Functions in R
- Paste Multiple Columns Together
- The R Programming Language
To summarize: In this R tutorial you learned how to split huge data frames into lists. If you have any further questions and/or comments, tell me about it in the comments section. Besides that, please subscribe to my email newsletter to get updates on new articles.
Statistics Globe Newsletter