2017-11-25 5 views
1

記号は自動車の保険リスク評価です。levels()は負の値を受け入れていません。回避策はありますか?

str(carprice$symboling) 

$のsymboling:因子W/6レベル "-2"、 " - 1"、 "0"、..:6 6 4 5 5 5 4 4 4 3 ...

levels(carprice$symboling)[-2:-1] <- "safe" 
levels(carprice$symboling)[0:1] <- "mild risky" 
levels(carprice$symboling)[2:3] <- "risky" 

str(carprice$symboling) 

$記号:Factor w/2 level「軽度の危険性」、「危険性」:2 2 2 2 2 2 2 2 2 2 ...

負のレベルが期待されないのはなぜですか?

+0

メモ引用符を '「-2」'出力 - 'levels'れます'文字'ベクトルではなく、インデックス – MichaelChirico

答えて

2

Rのインデックスは、vectorの値の位置を示します。これは、data.frame、matrixの列インデックスまたは行インデックスです。ここでは、「シンボル」列のlevelsに、既存のレベルの位置に基づく特定の値を割り当てようとしています。レベルが-2のオーダーであると仮定すると:3、最初の2つのレベルが割り当てられますし、次の2「危険軽度」に、「安全」と「危険」

levels(carprice$symboling)[1:2] <- "safe" 
levels(carprice$symboling)[3:4] <- "mild risky" 
levels(carprice$symboling)[5:6] <- "risky" 

との最後の2

周りこの再現性の例としてすぎる

levels(carprice$symboling) <- setNames(rep(c('safe', 'mild risky', 'risky'), each = 2), 
       -2:3)[levels(carprice$symboling)] 

単一の工程で行うことができる

set.seed(24) 
v1 <- factor(sample(-2:3, 20, replace = TRUE)) 
levels(v1) <- setNames(rep(c('safe', 'mild risky', 'risky'), each = 2), -2:3)[levels(v1)] 
関連する問題