使用突变函数的r变量替换



我正在尝试创建一个新变量,该变量包含where"NA";在Var1变量中为0,并使用dplyr包中的mutate函数使其他观测保持正常。然而,我没有得到我想要的。

以下是数据和代码:

Dados1 <- data.frame(Var1 = c(rep("NA", 4), "H", "Q",rep("NA", 4)))
Dados1
library(dplyr)
Dados1 <- Dados1 %>% 
dplyr::mutate(NewCode = ifelse(Var1 == "NA", "0"))
Dados1
Erro: Problem with `mutate()` input `NewCode`.
x argumento "no" ausente, sem padrão
i Input `NewCode` is `ifelse(Var1 == "NA", "0")`.
Run `rlang::last_error()` to see where the error occurred.
> Dados1

试试这个:

library(dplyr)
#Code
Dados1 <- Dados1 %>% dplyr::mutate(NewCode = ifelse(Var1=='NA', "0",Var1))    

输出:

Dados1
Var1 NewCode
1    NA       0
2    NA       0
3    NA       0
4    NA       0
5     H       H
6     Q       Q
7    NA       0
8    NA       0
9    NA       0
10   NA       0

同样,对于使用真正的NA进行引导,您可以尝试以下操作:

#Data 2
Dados1 <- data.frame(Var1 = c(rep(NA, 4), "H", "Q",rep(NA, 4)),stringsAsFactors = F)
#Code 2
Dados1 <- Dados1 %>% 
dplyr::mutate(NewCode = ifelse(is.na(Var1), "0",Var1))

输出:

Dados1
Var1 NewCode
1  <NA>       0
2  <NA>       0
3  <NA>       0
4  <NA>       0
5     H       H
6     Q       Q
7  <NA>       0
8  <NA>       0
9  <NA>       0
10 <NA>       0

您的语法错误:使用ifelse(或dplyr版本if_else(时您必须提供三个输入。

  1. 逻辑语句
  2. 满足语句时的输出
  3. 如果不满足语句,则输出

您的案例中缺少编号3。

Dados1 <- Dados1 %>% 
dplyr::mutate(NewCode = ifelse(Var1 == "NA", "0", VaR1))

最新更新