在R语言中,因子(factor)的水平(levels)和标签(labels)似乎有所区别。 迄今为止,我一直认为水平是因子水平的“真实”名称,而标签是输出(例如表格和图形)中使用的名称。但显然情况并非如此,以下示例说明了这一点:
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
所以,我的问题分为两个部分:
水平和标签有什么区别?
是否可以为脚本和输出的因子级别使用不同的名称?
背景:对于较长的脚本,使用短因子级别进行脚本编写似乎更加容易。然而,在报告和绘图方面,这种简短的因子级别可能不足够,应该用更精确的名称替代。
levels
,并且有些混淆。它在内部存储整数代码。这些整数代码与原始值无关,无论它们是什么类型。我认为你误解了我的意思。 - Joris Meys