如何解决创建用于捕获4个字符串变量中是否缺少字段的变量
我正在创建伪变量,其中缺失值为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),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))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。