2017-06-20 16 views
0

私は次のように数値データに "yes"、 "no"応答を変換して、結果を散布図にプロットすることができます。強制的な警告メッセージによってNAsが導入されるのはなぜですか?

> 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 

ご覧のとおり、この警告メッセージが表示されます。最終的には、散布図を作成すると、NAsのために空白になります。

私もこの方法で修正しようとしました。

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のNAがあります。

+2

助けるために容易になるだろう例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 'class(cust.df $ email)'とは何ですか?また、どのような値をyes/noにしたいですか? 0/1? 1/0? 2/10? – MrFlick

+0

Mr. Flick、 – Luis

+0

これはキャラクターです。 2 =はい、1 =いいえ – Luis

答えて

0

これを処理する方法としては、散布図に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))が動作しない理由は、あなただけhead(cust.df$email)factor表現を表示するので、あなたが要因に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 
+0

はい、私にそれを見ていただきありがとうございます。 Rの初心者として、あなたの代替ソリューションに感謝します。 Rは楽しく、学習曲線はそれほど悪くはありません。 – Luis

1

を私の知る限りでは、イエスとノーと同等ではないにこれはTRUEとFALSEで動作します。 「yes」と「no」に値を直接割り当てる必要があります。あなたは0と1をしたい場合

cust.df$email<-factor(cust.df$email) 
cust.df$email<-as.numeric(cust.df$email) 

これは、あなたのデータに1と2を割り当てます、そして、あなたは簡単に使用することができます:あなたは[再現性を提供する場合

cust.df$email[cust.df$email==2]<-0

+0

それはうまくいった。アドバイスありがとう。 – Luis

+0

あなたは大歓迎です! – sconfluentus

関連する問題