循环替换R中某些变量中的所有非空值
Loop to replace all non-blank values in certain variables in 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|
假设您的数据框名为 df
for (v in list.vars){
df[[paste0(v,"_result")]] <- df[[v]] %>% is.na() %>% `!`
}
这个有用吗:
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>
我如何能够 运行 一个循环来将单独列表中的变量中的所有 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|
假设您的数据框名为 df
for (v in list.vars){
df[[paste0(v,"_result")]] <- df[[v]] %>% is.na() %>% `!`
}
这个有用吗:
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>