2016-11-01 7 views
-2

、以下のように係数欄がありますrの値を変換すると、何が原因ですか? DFで

q5 
A 
1 
B 
1 

私はA Bdf$q5<-as.character(df$q5)

df$q5[df$q5!=1]<-0


0に変換したいが、結果は次のとおりです。

q5 
NA 
1 
NA 
1 

何ですか?うんざり?

+3

あなたは 'r'タグを使用する場合、データを共有するための' dputを() 'を使用してください。より多くの情報のためにあなたのポインタを 'r'タグの上に置いてください。 –

+2

私は 'as.character'行が決して走らなかったと思います。私はその行をスキップして結果を再現することができます。問題は、あなたがしたように新しいグループを追加することができないカテゴリ変数である 'factor'を使って作業していることです。表示するときに 'as.character'を使って変換すると、すべて正常に動作します。 – thelatemail

+0

'q5'を最初に文字に変更するとうまくいくはずです。因子を維持するために、ベクトルへの代入でレベルを変更することはできません。レベル(df $ q5)[レベル(df $ q5)!= 1] < - 0'をレベル自体に割り当てる必要があります。 'forcats :: fct_collapse(df $ q5、 '0' = c( 'A'、 'B'))'それにかかわらず、後でinteger/numericに変換する必要があります。因子の場合は、 'as.integer(as.character(df $ q5))'を使用して、因子が格納されている整数をうっかりとつかないようにします。 – alistaire

答えて

1

recodeを使用して、characterに変換する代わりにfactor列のlevelsを変更してから変更することができます。

library(car) 
df$q5 <- recode(df$q5, "c('A', 'B') = 0") 
df$q5 
#[1] 0 1 0 1 
#Levels: 0 1 
+0

私はまだ混乱しています、私のスクリプトの問題は何ですか? –

+0

@ Angelia.Meganここでは、値を 'character'クラスに変更せずに値を0に変換する方法を示しています。例とコードに基づいて、それは私とうまく動作します。 – akrun

+0

ありがとう!あなたのスクリプトは正常に動作します。 –

0

問題は再現できません。

df <- read.table(con<-file("clipboard"),header=T) 

df$q5.char <- as.character(df$q5) 

df$q5.char[df$q5.char!=1] <- 0 
q5 q5.char 
1 A  0 
2 1  1 
3 B  0 
4 1  1 
関連する問題