为什么我会通过强制警告信息引入NA?

时间:2017-06-20 23:12:19

标签: r

我使用以下内容将“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。

3 个答案:

答案 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,

当我将其删除时,它就像一种魅力。希望对将来遇到此问题的任何人有所帮助。