[英]Convert multiple columns to binary in R
嗨,我有一个数据集,其中包含用NA或“ Y”填充的多个列。 我希望分别将这些值设为0和1。
我对R相当陌生,并试图确定遍历这些变量并对其重新编码的最佳方法。
STATE<-c(NA, "WA", "NY", NA, NA)
x<-c(NA,"Y",NA,NA,"Y")
y<-c(NA,NA,"Y",NA,"Y")
z<-c("Y","Y",NA, NA, NA)
mydata<-data.frame(x,y,z)
我有一个很大的数据集,其中有许多变量。 但是,我希望其中一些人(例如STATE)不予理会。 任何帮助将不胜感激。 谢谢。
您可以使用ifelse
:
ifelse(is.na(mydata),0,ifelse(mydata=="Y",1,mydata)
如果它们是NA,则将mydata的元素替换为0;如果它们是“ Y”,则将其替换为1;如果它们是其他任何元素,则将其保留。
您添加了二进制标记。 R具有二进制类型:TRUE / FALSE,因此如果要使用二进制,则应使用
ifelse(is.na(mydata),FALSE,ifelse(mydata=="Y",TRUE,mydata)
代替。
我认为最好的办法是使用mutate_each()
函数从包dplyr
:
library(dplyr)
STATE <- c(NA, "WA", "NY", NA, NA)
x <- c(NA, "Y", NA, NA, "Y")
y <- c(NA, NA, "Y", NA, "Y")
z <- c("Y", "Y", NA, NA, NA)
mydata <- data.frame(x, y, z, STATE)
mydata <- mutate_each(mydata, funs(ifelse(is.na(.), 0, 1)), -STATE)
它将在funs()
内部指定的函数应用于每个变量。 点.
是变量的表示形式。 要跳过一个或多个变量,只需在它们-var1, -var2, ...
加上-
即可: -var1, -var2, ...
首先,您需要确保未将字符向量编码为因素:
mydata <- data.frame(x,y,z, stringsAsFactors=F)
然后:
mydata[mydata=="Y"] <- 1
mydata[is.na(mydata)] <- 0
mydata
x y z
1 0 0 1
2 1 0 1
3 0 1 0
4 0 0 0
5 1 1 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.