# 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