、以下のように係数欄がありますrの値を変換すると、何が原因ですか? DFで
q5
A
1
B
1
私はA B
df$q5<-as.character(df$q5)
df$q5[df$q5!=1]<-0
0
に変換したいが、結果は次のとおりです。
q5
NA
1
NA
1
何ですか?うんざり?
、以下のように係数欄がありますrの値を変換すると、何が原因ですか? DFで
q5
A
1
B
1
私はA B
df$q5<-as.character(df$q5)
df$q5[df$q5!=1]<-0
0
に変換したいが、結果は次のとおりです。
q5
NA
1
NA
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
私はまだ混乱しています、私のスクリプトの問題は何ですか? –
@ Angelia.Meganここでは、値を 'character'クラスに変更せずに値を0に変換する方法を示しています。例とコードに基づいて、それは私とうまく動作します。 – akrun
ありがとう!あなたのスクリプトは正常に動作します。 –
問題は再現できません。
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
あなたは 'r'タグを使用する場合、データを共有するための' dputを() 'を使用してください。より多くの情報のためにあなたのポインタを 'r'タグの上に置いてください。 –
私は 'as.character'行が決して走らなかったと思います。私はその行をスキップして結果を再現することができます。問題は、あなたがしたように新しいグループを追加することができないカテゴリ変数である 'factor'を使って作業していることです。表示するときに 'as.character'を使って変換すると、すべて正常に動作します。 – thelatemail
'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