Neil
Neil

Reputation: 8247

find whether a column exists in R data frame and if not then create it

I have following dataframe in R

 no     qc6    qc5    qc3     itv6   itv5    itv3
123      12    12     14      8      9       9

Now, I want to check whether following columns exist in a dataframe or not and if not then create a new column with 0 value in it.

 qc1,qc2,itv1,itv2

I can do it with if loop in R

 if(!"qc1" %in% colnames(df))
 {
   df$qc1 <- 0
 }

But, then I will have to write loops for every variable to create. Is there any faster way of doing it ?

Upvotes: 6

Views: 7738

Answers (1)

AodhanOL
AodhanOL

Reputation: 630

If you have a vector of names that you know should be in it, the following will check if they already have a column. If not, they'll create one with value 0.

x <- c( "qc1","qc2","itv1","itv2", "no" )
d <- data.frame( no = 123,    qc6 = 12,    qc5 = 12,    qc3 = 14,     itv6 = 8,   itv5 = 9,    itv3 = 9)

d[x[!(x %in% colnames(d))]] = 0
d

This gives the output:

 no     qc6    qc5    qc3     itv6   itv5    itv3    qc1    qc2    itv1    itv2
123      12    12     14      8      9       9       0      0      0       0

Upvotes: 12

Related Questions