In R, you can select columns (i.e., variables) from a data frame based on their names or their positions. However, if you neither know the column names nor the number of columns, keeping the last n columns can be difficult.
In this article, we discuss two methods to select the last n columns of a data frame. We will use basic R code, as well as the
last_col() function from the dplyr package.
In order to demonstrate how the two methods work, we will use the following dataset.
my_data <- data.frame(var1 = c(1:5), var2 = letters[1:5], var3 = seq(2,10,2), var4 = LETTERS[22:26]) my_data
Method 1: Basic R code
The easiest way to select the last n columns of a data frame with basic R code is by combining the power of two functions. Namely,
These two functions have the following purpose:
- The names() function creates a vector with all the column names.
- The tail() function returns the last n names from the vector of column names.
By linking these two functions you easily select the last n columns of your data. Moreover, you neither need to know the actual column names, nor the number of columns.
Here n represents the number of columns you want to select.
Example 1: Basic R code
With the R code below we select the last column of the data frame my_data.
last_column <- my_data[tail(names(my_data), 1)] last_column
Similarly, we can use the parameter n = 2 in order to select the last two columns.
last_column <- my_data[tail(names(my_data), 2)] last_column
Method 2: The last_col() function (dplyr)
You can also use the
last_col() function from the dplyr package to select the last n columns from a data frame.
The last_col() function returns the name of the last column which you can use as an argument of the select() function. By combining these two functions, you easily keep the last column of a data set.
library(dplyr) df %>% select(last_col())
Example 2: The last_col() function (dplyr)
This example shows how the select the last column of a data set.
last_column <- my_data %>% select(last_col()) last_column
By default, the last_col() function selects only the last column. However, you can set the offset parameter to n-1 the keep the last n columns.
last_column <- my_data %>% select(last_col(1):last_col()) last_column