2016-05-19 12 views
2

私はこのベクトルIが同じレベル(すなわち、firstOne)にc("firstOne","firstTwo)を割り当てるベクトルを考慮したいベクターをどのようにリファクタリングするのですか?

v <- c("firstOne","firstTwo","secondOne") 

を有します。私はこれを試してみました:

> factor(v, labels = c("firstOne", "firstOne", "secondOne")) 
[1] firstOne firstOne secondOne 
Levels: firstOne firstOne secondOne 

しかし、私は重複因子(と警告メッセージがそれを使用しないように助言)を取得します。代わりに、出力を次のように表示したいとします。

,

残念ながら文字列を置換せずにこの出力を得る方法はありますか?ここで

答えて

0

最終的に私はまた何とか見えない解決策を見つけましたが、大きな問題は見えません。(聞くのを楽しみにしています。これは可能性のある問題かもしれません):

v <- c("firstOne","firstTwo","secondOne") 
factor(v) 
factor(factor(v,labels = c("firstOne","firstOne","secondOne"))) 
2

は、オプションのカップルです:

v <- factor(ifelse(v %in% c("firstOne", "firstTwo"), "firstOne", "secondOne")) 
v <- factor(v,levels = c("firstOne","secondOne")); f[is.na(f)] <- 'firstOne' 
2

要因は、ラベルの付いただけの数値(整数)のベクトルであり、その要因を操作することは、整数ではなく、文字列の操作と同じです。そのため、性能面あなたはsjmisc-packagerec -functionを使用することができ

f <- as.factor(v) 
f[f %in% c('firstOne', 'firstTwo')] <- 'firstOne' 
f <- droplevels(f) 
+1

代わりにレベルに割り当ててください。 'level(f)[level(f)%c(" firstOne "、" firstTwo ")] < - " firstOne "' – thelatemail

+0

@thelatemailこれは可能だったのですが、 –

0

を行うには完全にOKです:

rec(v, "firstTwo=firstOne;else=copy", as.fac = T) 

> [1] firstOne firstOne secondOne 
> Levels: firstOne secondOne 

(出力が短縮される。sjmiscパッケージはlabelled dataひいてはをサポートしていることに注意してください

関連する問題