如何将变量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
答案 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)
一种简单的方法是将pmax
与na.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)
&