用一个来自另一个变量的值替换一个变量中的NAs

时间:2013-08-05 12:59:55

标签: r replace

如何将变量VAR1的“NAs”替换为第二个变量VAR2的值,以在R中创建第三个变量VAR3?数据如下所示:

 VAR1:    VAR2:
 1        NA
 3        NA
 NA       1 
 NA       3
 2        NA 
 NA       1

之后它应该看起来像这样:

 VAR1:    VAR2:    VAR3:
 1        NA       1   
 3        NA       3
 NA       1        1
 NA       3        3
 2        NA       2
 NA       1        1  

4 个答案:

答案 0 :(得分:7)

一种方法是使用ifelse

DF <- transform(DF, VAR3 = ifelse(!is.na(VAR1), VAR1, VAR2))

其中使用transform来避免反复输入DF$,但也许您会更喜欢:

DF$VAR3 <- ifelse(!is.na(DF$VAR1), DF$VAR1, DF$VAR2)

答案 1 :(得分:4)

一种简单的方法是将pmaxna.rm = TRUE

一起使用
pmax(VAR1, VAR2, na.rm = TRUE)

数据框dat的命令:

dat <- transform(dat, VAR3 = pmax(VAR1, VAR2, na.rm = TRUE))

答案 2 :(得分:1)

虽然我喜欢变换,但这是另一种方法:

##  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

答案 3 :(得分:0)

&