[解決済み] 因子水準と因子ラベルの混同
2022-05-16 10:03:31
質問
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つの部分から成っています。
-
レベルとラベルの違いは何ですか?
-
スクリプトと出力のために、因子レベルの異なる名前を持つことは可能ですか?
背景 長いスクリプトの場合、短い因子レベルでスクリプトを作成する方がはるかに簡単なようです。しかし、レポートやプロットでは、この短い因子レベルは適切でない可能性があり、より正確な名前に置き換える必要があります。
どのように解決するのですか?
簡単に言うと、レベルは入力で、ラベルは出力です。
factor()
関数で出力されます。ファクターは
level
属性があり、この属性は
labels
引数で設定されます。
factor()
という関数があります。これはSPSSなどの統計パッケージのラベルの概念と異なるため、最初のうちは混乱することがあります。
この行のコードで行うこと
df$f <- factor(df$f, levels=c('a','b','c'),
labels=c('Treatment A: XYZ','Treatment B: YZX','Treatment C: ZYX'))
は、Rに対して、ベクトル
df$f
- 係数に変換したいもの。
- 異なるレベルがa,b,cのようにコード化されている場合
- で、レベルを Treatment A などと表示したい場合。
因子関数は、値a、b、cを探し、それらを数値因子クラスに変換し、ラベル値を
level
属性に追加します。この属性は、内部の数値を正しいラベルに変換するために使用されます。しかし、ご覧のように
label
属性はありません。
> df <- data.frame(v=c(1,2,3),f=c('a','b','c'))
> attributes(df$f)
$levels
[1] "a" "b" "c"
$class
[1] "factor"
> df$f <- factor(df$f, levels=c('a','b','c'),
+ labels=c('Treatment A: XYZ','Treatment B: YZX','Treatment C: ZYX'))
> attributes(df$f)
$levels
[1] "Treatment A: XYZ" "Treatment B: YZX" "Treatment C: ZYX"
$class
[1] "factor"
関連
-
[解決済み] 文字列ベクトルを代入して、列名を持つ空のデータフレームを作成する?重複
-
[解決済み] グループ化関数(tapply、by、aggregate)と*applyファミリ
-
[解決済み] データフレーム列の名前によるドロップ
-
[解決済み] Rの代入演算子"="と"<-"の違いは何ですか?
-
[解決済み] ggplot2 の軸ラベルを回転させ、間隔を空ける
-
[解決済み] 情報を損なわずに因数を整数値に変換するには?
-
[解決済み] パッケージ 'xxx' は利用できません (for R version x.y.z) 」という警告にどのように対処したらよいですか?
-
[解決済み] require()とlibrary()の違いは何ですか?
-
[解決済み] リストやデータフレームの要素にアクセスするためのブラケット[ ]とダブルブラケット[[ ]]の違いについて
-
[解決済み】サブセットされたデータフレーム内の未使用の因子レベルを削除する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
R LanguageError in hist.default() : 'x' は数値でなければなりません.
-
[解決済み] R および RStudio のコンソールをクリアする関数
-
[解決済み] ggplot 2.0.0でのポイントサイズ
-
[解決済み] 特定のサイズのプロットウィンドウを作成する
-
[解決済み] Rの再現性のある優れた例題の作り方
-
[解決済み] Rで2つのグラフを同じプロットで表示する
-
[解決済み] ggplot2 の棒グラフで棒を並べる
-
[解決済み] Rで文字列から最後のn文字を抽出する
-
[解決済み】RでCRANミラーを選択する方法
-
[解決済み] ggplot2 で個々のファセットにテキストをアノテートする