循环以替换R中某些变量中的所有非空值



如何运行循环,将单独列表中的变量中的所有NA值设置为FALSE,将所有非NA值设为TRUE?

示例数据帧:

| var1 | var2 | var3 | var4 |
| --- | --- | --- | --- |
| name | email | NA | b|
| name | email | a| b|
| name | email | a| NA|
| name | email | NA| b|
| name | email | a| b|
| name | email | a| NA|
list.vars <- list("var3", "var4")

示例结果数据帧:

| var1 | var2 | var3 | var4 |
| --- | --- | --- | --- |
| name | email | FALSE| TRUE|
| name | email | TRUE| TRUE|
| name | email | TRUE| FALSE|
| name | email | FALSE| TRUE|
| name | email | TRUE| TRUE|
| name | email | TRUE| FALSE|

这行吗:

library(dplyr)
df %>% mutate(across(var3:var4, ~ ifelse(is.na(.), FALSE, TRUE)))
var1  var2  var3  var4
1 name email FALSE  TRUE
2 name email  TRUE  TRUE
3 name email  TRUE FALSE
4 name email FALSE  TRUE
5 name email  TRUE  TRUE
6 name email  TRUE FALSE

使用的数据:

df
var1  var2 var3 var4
1 name email <NA>    b
2 name email    a    b
3 name email    a <NA>
4 name email <NA>    b
5 name email    a    b
6 name email    a <NA>

假设您的数据帧称为df

for (v in list.vars){
df[[paste0(v,"_result")]] <- df[[v]] %>% is.na() %>% `!`
}

最新更新