# Subset Data Frame within for-Loop in R (Example)

In this tutorial, I’ll show how to split a data frame using a loop in R.

The article will consist of these contents:

So let’s start right away:

## Creation of Example Data

We’ll use the following data as a basis for this R programming tutorial:

```data <- data.frame(x1 = 1:8, # Create example data frame x2 = letters[1:8], x3 = 18:11, group = c("gr1", "gr1", "gr1", "gr2", "gr2", "gr3", "gr3", "gr3")) data # Print example data frame``` Table 1 illustrates that our example data is made up of eight rows and four columns. Note that the fourth column is a group indicator.

## Example: Divide Data Frame Based on Group Column Using split() Function

In this example, I’ll show how to create new data frame subsets within a for-loop.

For this task, we first need to apply the split function to our data frame to create a list of data frame subsets:

```my_splits <- split(data, data\$group) # Split data frame in list my_splits # Print list # \$gr1 # x1 x2 x3 group # 1 1 a 18 gr1 # 2 2 b 17 gr1 # 3 3 c 16 gr1 # # \$gr2 # x1 x2 x3 group # 4 4 d 15 gr2 # 5 5 e 14 gr2 # # \$gr3 # x1 x2 x3 group # 6 6 f 13 gr3 # 7 7 g 12 gr3 # 8 8 h 11 gr3```

We could now simply extract each of the data frame subsets from this list. For instance, the following R code returns the first data frame subset:

`my_splits\$gr1 # Print data frame in first list element` However, we can also use a for-loop to create new data frames where each new data frame contains one of these subsets.

For this, we first have to specify a vector of names for our new data frames. Note that this vector needs to have the same length as the number of splits.

```split_names <- c("data_new1", # Specify names of new data frames "data_new2", "data_new3")```

Next, we can run a for-loop where we select one of the data frame subsets within each iteration:

```for (i in 1:length(my_splits)) { # Run for-loop   assign(split_names[i], my_splits[[i]]) }```

After running the previous R code, we have created three new data frames, where each data frame contains one of the subsets:

`data_new1 # Print first data frame` `data_new2 # Print second data frame` `data_new3 # Print third data frame` ## Video & Further Resources

Do you want to know more about the splitting of a data frame using a loop? Then I recommend watching the following video on my YouTube channel. In the video, I explain the content of this tutorial in RStudio:

Furthermore, you may want to read the related articles on https://www.statisticsglobe.com/.

In summary: This tutorial has shown how to divide a data frame using a for-loop in the R programming language. Please let me know in the comments, in case you have additional questions.

Subscribe to the Statistics Globe Newsletter