2016-06-02 17 views
1

カラムの空白セル( "")を "no"に置き換えたい。不足しているエントリは私にとって意味があります(まだスコアが決まっていません)、後で回帰ツリーでfactor変数を使用するのが好きです。 ブランクセルを "no"に置き換えるR

は、私がここに同様の質問を見つけました( Replace blank cells with character)と、以下を試してみましたが、その後、空白のセルをテキストとしてNAに変換されていません。

> Test$SCORE[Test$SCORE==" "]<- "no" 

Warning message: 
In `[<-.factor`(`*tmp*`, Test$SCORE == " ", value = c(NA, NA, 8L, : 
    invalid factor level, NA generated 

NAを避け、自分自身を使用する方法はありますテキスト?

たとえばデータ「テスト」を参照してください:

ID Score 
1. A 
2. " " 
3. B 
4. " " 
5. C 

はNAを避け、自分のテキストを使用する方法はありますか? これは私が達成したい結果である:

ID Score 
1 A 
2 "no" 
3 B 
4 "no" 
5 C 

データセットは、したがって、インデックスの特定の行を介したマニュアルソリューションは非常に時間がかかり、非常に大きいです。 Rは私のために非常に新しいので、あなたの助けに感謝します。

は事前にありがとうございました。

追加情報:

STR(テストの$ SCORE) ファクター13 /レベル ""、 "A"、 "B"、 "C"、...

ワット許しなさいサンプルテーブルのフォーマットですが、これが私の最初の質問です。

答えて

6

因子レベルの作業:

DF <- read.table(text = 'ID Score 
       1. A 
       2. " " 
       3. B 
       4. " " 
       5. C', header = TRUE) 
levels(DF$Score)[levels(DF$Score) == " "] <- "no" 
# ID Score 
#1 1  A 
#2 2 no 
#3 3  B 
#4 4 no 
#5 5  C 

あなたのベクトルの要素よりもはるかに少ない要因のレベルが通常ありますので、これは非常に効率的です。

0
> df <- data.frame(Test=1:5,Score=c("A"," ","B"," "," ")) 
> df 
    Test Score 
1 1  A 
2 2  
3 3  B 
4 4  
5 5  

> df[,2] <- as.character(df$Score) 
> is.character(df[,2]) 
[1] TRUE 

> df$Score[df$Score==" "] <- "No" 
> df 
    Test Score 
1 1  A 
2 2 No 
3 3  B 
4 4 No 
5 5 No 
+0

factorに戻す必要があります。 – zx8754

+0

因子そのものを望むなら 'levels()'関数を使うべきです。 このコマンドは、 'level(df $ Score)[levels(df $ Score)==" "] < - "いいえ "' を実行する必要はありません。 –

+1

はい、私はしたがって、ローランドのソリューションはより良い選択肢です。 OPはファクタとしてファクタコラムを保持する必要があるかもしれないので。 – zx8754

関連する問題