折りたたむ必要がある複数のレベルを含む因子をクリーンアップする最も効果的な (つまり、効率的/適切な) 方法は何ですか? つまり、2 つ以上の因子レベルを 1 つに結合する方法です。
以下は、2 つのレベル "Yes" と "Y" が "Yes" に折りたたまれ、"No" と "N" が "No" に折りたたまれる例です。
## Given:
x <- c("Y", "Y", "Yes", "N", "No", "H") # The 'H' should be treated as NA
## expectedOutput
[1] Yes Yes Yes No No <NA>
Levels: Yes No # <~~ NOTICE ONLY **TWO** LEVELS
1 つのオプションはもちろん、手で使用する前に弦をきれいにするsub
ことです。
別の方法は、重複したラベルを許可してからドロップすることです
## Duplicate levels ==> "Warning: deprecated"
x.f <- factor(x, levels=c("Y", "Yes", "No", "N"), labels=c("Yes", "Yes", "No", "No"))
## the above line can be wrapped in either of the next two lines
factor(x.f)
droplevels(x.f)
しかし、より効果的な方法はありますか?
levels
との引数がベクトルであることはわかっていlabels
ますが、リスト、名前付きリスト、名前付きベクトルを使って何が起こるかを実験しました。
factor(x, levels=list(c("Yes", "Y"), c("No", "N")), labels=c("Yes", "No"))
factor(x, levels=c("Yes", "No"), labels=list(c("Yes", "Y"), c("No", "N")))
factor(x, levels=c("Y", "Yes", "No", "N"), labels=c(Y="Yes", Yes="Yes", No="No", N="No"))
factor(x, levels=c("Y", "Yes", "No", "N"), labels=c(Yes="Y", Yes="Yes", No="No", No="N"))
factor(x, levels=c("Yes", "No"), labels=c(Y="Yes", Yes="Yes", No="No", N="No"))