Rでは因子のレベルとラベルに違いがあるようです。これまでは、レベルは因子レベルの「実際の」名前であり、ラベルは出力(テーブルやプロットなど)に使用される名前であると常に思っていました。次の例に示すように、明らかにこれは当てはまりません。
df <- data.frame(v=c(1,2,3),f=c('a','b','c'))
str(df)
'data.frame': 3 obs. of 2 variables:
$ v: num 1 2 3
$ f: Factor w/ 3 levels "a","b","c": 1 2 3
df$f <- factor(df$f, levels=c('a','b','c'),
labels=c('Treatment A: XYZ','Treatment B: YZX','Treatment C: ZYX'))
levels(df$f)
[1] "Treatment A: XYZ" "Treatment B: YZX" "Treatment C: ZYX"
レベル( 'a'、 'b'、 'c')はスクリプトを実行するときに何らかの方法でアクセスできると思いましたが、これは機能しません。
> df$f=='a'
[1] FALSE FALSE FALSE
しかし、これは:
> df$f=='Treatment A: XYZ'
[1] TRUE FALSE FALSE
したがって、私の質問は2つの部分で構成されています。
レベルとラベルの違いは何ですか?
スクリプトと出力の因子レベルに異なる名前を付けることは可能ですか?
背景:長いスクリプトの場合、因子レベルが短いスクリプトの方がはるかに簡単です。ただし、レポートとプロットの場合、この短い因子レベルは適切でない場合があり、より正確な名前に置き換える必要があります。