5

如何用第二个变量 VAR2 的值替换变量 VAR1 的“NAs”以在 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

4 回答 4

7

一种方法是使用ifelse

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

wheretransform用于避免DF$一遍又一遍地输入,但也许您更喜欢:

DF$VAR3 <- ifelse(!is.na(DF$VAR1), DF$VAR1, DF$VAR2)
于 2013-08-05T13:08:53.943 回答
4

一种简单的方法是使用pmaxwith na.rm = TRUE

pmax(VAR1, VAR2, na.rm = TRUE)

数据帧命令dat

dat <- transform(dat, VAR3 = pmax(VAR1, VAR2, na.rm = TRUE))
于 2013-08-05T13:44:35.360 回答
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
于 2013-08-05T13:09:54.103 回答
1
library(dplyr)
df %>% mutate(VAR3=coalesce(VAR1,VAR2))
于 2018-02-02T01:05:27.943 回答