How can I replace the \"NAs\" of a variable VAR1 with with the values of the second variable VAR2 to create a third variable VAR3 in R? The data looks like this:
<
Here is another approach though I like the transform:
## dat <- read.table(text="VAR1 VAR2
## 1 NA
## 3 NA
## NA 1
## NA 3
## 2 NA
dat$VAR3 <- dat[, "VAR1"]
dat[is.na(dat[, "VAR3"]), "VAR3"] <- dat[is.na(dat[, "VAR3"]), "VAR2"]
dat
## VAR1. VAR2. VAR3
## 1 1 NA 1
## 2 3 NA 3
## 3 NA 1 1
## 4 NA 3 3
## 5 2 NA 2
## 6 NA 1 1
One way is to use ifelse
:
DF <- transform(DF, VAR3 = ifelse(!is.na(VAR1), VAR1, VAR2))
where transform
was used to avoid typing DF$
over and over, but maybe you will prefer:
DF$VAR3 <- ifelse(!is.na(DF$VAR1), DF$VAR1, DF$VAR2)
One easy way is to use pmax
with na.rm = TRUE
:
pmax(VAR1, VAR2, na.rm = TRUE)
The command for data frame dat
:
dat <- transform(dat, VAR3 = pmax(VAR1, VAR2, na.rm = TRUE))
library(dplyr)
df %>% mutate(VAR3=coalesce(VAR1,VAR2))