我使用以下内容将“yes”,“no”响应转换为数字数据,以便我可以将结果绘制到散点图中。
> head(cust.df$email)
[1] "yes" "yes" "yes" "yes" "no" "yes"
> as.numeric(head(cust.df$email))
[1] NA NA NA NA NA NA
Warning message:
NAs introduced by coercion
如您所见,我收到此警告消息。最终结果是,当我创建散点图时,由于NA,它是空的。
我甚至试图用这种方法修复它。
as.factor(head(cust.df$email))
yes yes yes yes no yes
Levels: no yes
> as.numeric(head(cust.df$email))
[1] NA NA NA NA NA NA
Warning message:
NAs introduced by coercion
然而,这些都没有奏效。有没有人有任何关于如何解决这个问题的技巧?这些数据确实有341个NAs。
答案 0 :(得分:2)
据我所知,是和否不等于R中的0和1.但是它可以使用TRUE和FALSE。您需要直接为“是”和“否”分配值。
cust.df$email<-factor(cust.df$email)
cust.df$email<-as.numeric(cust.df$email)
这将为您的数据分配1和2,如果您想要0和1,那么您只需使用:
cust.df$email[cust.df$email==2]<-0
答案 1 :(得分:1)
处理它的一种可能方法是在散点图中使用as.numeric(as.factor(email))
。这是一个展示其工作原理的示例:
stuff <- sample(c("yes","no",NA), 10, replace=T)
stuff
# [1] "yes" "no" "yes" NA NA "no" "no" "yes" "yes" "no"
as.numeric(as.factor(stuff))
# [1] 2 1 2 NA NA 1 1 2 2 1
as.numeric(head(cust.df$email))
无效的原因是因为您只展示了factor
head(cust.df$email)
的{{1}}代表,您没有将cust.df$email
转换为因子。
另一种可能的方法是创建一个新变量 - 这将是一种使用您喜欢的任何数字代码的简单方法:
stuff_num <- rep(NA, length(stuff))
stuff_num[stuff=="yes"] <- 2
stuff_num[stuff=="no"] <- 1
stuff_num
# [1] 2 1 2 NA NA 1 1 2 2 1
答案 2 :(得分:0)
我以前遇到过此问题,问题出在读取的.csv文件上。对我来说,单元格具有“,”这样的1,
当我将其删除时,它就像一种魅力。希望对将来遇到此问题的任何人有所帮助。