5

Rで3番目の変数VAR3を作成するために、変数VAR1の「NA」を2番目の変数VAR2の値に置き換えるにはどうすればよいですか? データは次のようになります。

 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

1 つの方法は、次を使用すること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

簡単な方法の 1 つは、次のように使用pmaxすること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 に答える