创建捕获 4 个字符串变量中是否缺少字段的变量
Create variable that captures if there are missing fields in 4 string variables
我正在创建虚拟变量,其中缺失值为 1,非缺失值为 0。缺失值为 NA
,即:
NA
NA
Positive
NA
Negative
我一次一个变量的代码成功创建了虚拟变量:
library(dplyr)
#create new dummy variable
df <- mutate(df, newvar = ifelse(is.na(var1), 1,0))
#check
sum(df$newvar == 1)
我有 4 个字符串变量,想创建一个新的虚拟变量,其中任何变量中的缺失值为 1,非缺失值为 0。我尝试重用上面的代码:
mylist <- c("var1", "var2", "var3", "var4")
for(i in mylist){
df <- mutate(df, newvar = ifelse(is.na(i), 1,0))
}
我知道我错误地使用了 for
循环,但这是正确的方法吗,还是我应该做些不同的事情?
我们可以使用 mutate
和 across
library(dplyr) # version >= 1.0.0
df <- df %>%
mutate(across(all_of(mylist), ~ +(is.na(.)), .names = '{col}_newvar'))
如果我们有更早的版本,请使用mutate_at
df %>%
mutate_at(vars(mylist), ~ +(is.na(.)))
如果我们需要创建一个新列来标记 'mylist'
中的那些列中是否存在任何缺失值
df1 <- df %>%
mutate(newvar = +(rowSums(is.na(select(., all_of(mylist)))) > 0))
我正在创建虚拟变量,其中缺失值为 1,非缺失值为 0。缺失值为 NA
,即:
NA
NA
Positive
NA
Negative
我一次一个变量的代码成功创建了虚拟变量:
library(dplyr)
#create new dummy variable
df <- mutate(df, newvar = ifelse(is.na(var1), 1,0))
#check
sum(df$newvar == 1)
我有 4 个字符串变量,想创建一个新的虚拟变量,其中任何变量中的缺失值为 1,非缺失值为 0。我尝试重用上面的代码:
mylist <- c("var1", "var2", "var3", "var4")
for(i in mylist){
df <- mutate(df, newvar = ifelse(is.na(i), 1,0))
}
我知道我错误地使用了 for
循环,但这是正确的方法吗,还是我应该做些不同的事情?
我们可以使用 mutate
和 across
library(dplyr) # version >= 1.0.0
df <- df %>%
mutate(across(all_of(mylist), ~ +(is.na(.)), .names = '{col}_newvar'))
如果我们有更早的版本,请使用mutate_at
df %>%
mutate_at(vars(mylist), ~ +(is.na(.)))
如果我们需要创建一个新列来标记 'mylist'
中的那些列中是否存在任何缺失值df1 <- df %>%
mutate(newvar = +(rowSums(is.na(select(., all_of(mylist)))) > 0))