Sometimes it is necessary to create a blank column in the R data frame to ensure that it will be available at all times. Here are multiple scenarios on how to do that. It might be just one blank column or multiple blank columns. Sometimes based on which of the necessary columns are missing.
Meanwhile, the same principles apply to adding one or multiple columns to the data frame with the same value.
Create one blank column in the R data frame
Here is a simple approach to add an empty column in R that comes from this post.
iris$EmptyColumn <- NA head(iris) # Sepal.Length Sepal.Width Petal.Length Petal.Width Species EmptyColumn #1 5.1 3.5 1.4 0.2 setosa NA #2 4.9 3.0 1.4 0.2 setosa NA #3 4.7 3.2 1.3 0.2 setosa NA #4 4.6 3.1 1.5 0.2 setosa NA #5 5.0 3.6 1.4 0.2 setosa NA #6 5.4 3.9 1.7 0.4 setosa NA
Add a blank column by using dplyr
Here is how to do the same as previously by using dplyr capabilities.
data(iris) require(dplyr) iris %>% mutate("EmptyColumn" = NA) %>% head() # Sepal.Length Sepal.Width Petal.Length Petal.Width Species EmptyColumn #1 5.1 3.5 1.4 0.2 setosa NA #2 4.9 3.0 1.4 0.2 setosa NA #3 4.7 3.2 1.3 0.2 setosa NA #4 4.6 3.1 1.5 0.2 setosa NA #5 5.0 3.6 1.4 0.2 setosa NA #6 5.4 3.9 1.7 0.4 setosa NA
By using the function mutate, you can create and move the column to a certain position in the data frame. Take a look at this post to learn more.
Create multiple empty columns in the R data frame
If you have column names, you can add them as multiple empty columns to a data frame like this.
data(iris) new_columns <- c("FirstEmpty", "SecondEmpty") iris[, new_columns] <- NA head(iris) # Sepal.Length Sepal.Width Petal.Length Petal.Width Species FirstEmpty SecondEmpty #1 5.1 3.5 1.4 0.2 setosa NA NA #2 4.9 3.0 1.4 0.2 setosa NA NA #3 4.7 3.2 1.3 0.2 setosa NA NA #4 4.6 3.1 1.5 0.2 setosa NA NA #5 5.0 3.6 1.4 0.2 setosa NA NA #6 5.4 3.9 1.7 0.4 setosa NA NA
It might be necessary to add the column to the data frame if it does not exist. Here is a simple way how to detect which of the columns are missing, but here is more about that.
data(iris) new_columns <- c("Species", "FirstEmpty", "SecondEmpty") x <- subset(new_columns, is.na( match(new_columns, names(iris)) ) ) x #[1] "FirstEmpty" "SecondEmpty"
By knowing what is missing, add the column to the R data frame if it does not exist.
iris[, x] <- NA head(iris) # Sepal.Length Sepal.Width Petal.Length Petal.Width Species FirstEmpty SecondEmpty #1 5.1 3.5 1.4 0.2 setosa NA NA #2 4.9 3.0 1.4 0.2 setosa NA NA #3 4.7 3.2 1.3 0.2 setosa NA NA #4 4.6 3.1 1.5 0.2 setosa NA NA #5 5.0 3.6 1.4 0.2 setosa NA NA #6 5.4 3.9 1.7 0.4 setosa NA NA
Add multiple blank columns by using dplyr
If you want to add a few blank columns by using the function mutate you can do that like this.
iris %>% mutate("FirstEmpty" = NA, "SecondEmpty" = NA)
But when there are too many to add, but you want to use dplyr to do that, you can create an empty data frame and bind that together with the existing one.
data(iris) bind_cols(iris , data.frame(matrix(ncol = 3, nrow = nrow(iris))) %>% setNames(c("one", "two", "three")) ) %>% head() # Sepal.Length Sepal.Width Petal.Length Petal.Width Species one two three #1 5.1 3.5 1.4 0.2 setosa NA NA NA #2 4.9 3.0 1.4 0.2 setosa NA NA NA #3 4.7 3.2 1.3 0.2 setosa NA NA NA #4 4.6 3.1 1.5 0.2 setosa NA NA NA #5 5.0 3.6 1.4 0.2 setosa NA NA NA #6 5.4 3.9 1.7 0.4 setosa NA NA NA
By the way, here is how to quickly drop an unnecessary column in the R data frame.
Leave a Reply