Es scheint einen Unterschied zwischen Ebenen und Beschriftungen eines Faktors in R zu geben. Bisher dachte ich immer, dass Ebenen der "echte" Name von Faktorstufen sind und Beschriftungen die Namen, die für die Ausgabe verwendet werden (wie Tabellen und Diagramme). . Dies ist offensichtlich nicht der Fall, wie das folgende Beispiel zeigt:
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"
Ich dachte, dass auf die Ebenen ('a', 'b', 'c') beim Skripten noch irgendwie zugegriffen werden kann, aber das funktioniert nicht:
> df$f=='a'
[1] FALSE FALSE FALSE
Aber das tut:
> df$f=='Treatment A: XYZ'
[1] TRUE FALSE FALSE
Meine Frage besteht also aus zwei Teilen:
Was ist der Unterschied zwischen Ebenen und Labels?
Ist es möglich, unterschiedliche Namen für Faktorstufen für Skripterstellung und Ausgabe zu haben?
Hintergrund: Bei längeren Skripten scheint die Skripterstellung mit kurzen Faktorstufen viel einfacher zu sein. Für Berichte und Diagramme sind diese kurzen Faktorwerte möglicherweise nicht ausreichend und sollten durch Präzisionsnamen ersetzt werden.
levels
Argument angeben , geben Sie die Werte in der Eingabe an, die mit demlabels
Argument übereinstimmen müssen . R behält die Beschriftungen (als Attributlevels
und es gibt Verwirrung) und speichert ganzzahlige Codes intern. Diese ganzzahligen Codes haben nichts mit den ursprünglichen Werten zu tun, unabhängig vom Typ. Ich denke du hast mich falsch verstanden.Ich habe ein Paket "lfactors" geschrieben, mit dem Sie entweder auf Ebenen oder Beschriftungen verweisen können.
Beachten Sie, dass für einen Faktor die Ebenen numerisch sein müssen, damit sie nicht mit den Beschriftungen verwechselt werden können.
quelle