R:Levels/Labels 用于序数变量和箱线图函数
R: Levels/Labels for ordinal variables and the boxplot function
我曾经将我的序数数据作为数据框中的纯数字(即 1-3)。结果很好,但我必须记住数字代表什么(在我的例子中:1=低,2=中,3=高)。
为了让事情对我来说更容易,我试图让 R 以通用方式显示 names/labels 而不是 1-3,即不管我是否使用表格、箱线图等。但是,我无法正常工作。
我试过了
data$var <- ordered(data$var,
levels = c(1, 2, 3),
labels = c("Low", "Medium", "High"))
在我这样做之后,
boxplot(data$var)
不再有效。为什么不呢?
假设您要绘制的自变量已经是一个因素,这里是重新排序水平和标签的一般方法:
# Let's say you have a factor in the default alphabetical order
my.fac <- factor(LETTERS[1:3])
str(my.fac)
# Now you want to reorder it arbitrarily:
levels(my.fac) <- list(A = "A", C = "C", B = "B")
str(my.fac) # they have been reordered
# You can also use this method to rename the levels,
# with or w/o changing the order:
levels(my.fac) <- list("Low" = "A", "Med" = "B", "High" = "C")
str(my.fac)
# The general format is list("new" = "old")
如果您的原始数据不是一个因素,那么您可以从 as.factor
开始强制转换。
该命令无效,因为 boxplot
期望第一个参数(x
参数)为数字。
如果您只是在寻找一个简单的解决方案,您可以简单地将数据绘制为整数(因为您的因素是有序的,因此它们将以正确的整数顺序排列)抑制原始轴并添加一个新轴带有右轴标签。
boxplot(as.integer(data$var), yaxt = "n")
axis(2, at = c(1, 2, 3), labels = c("Low", "Medium", "High"))
我曾经将我的序数数据作为数据框中的纯数字(即 1-3)。结果很好,但我必须记住数字代表什么(在我的例子中:1=低,2=中,3=高)。
为了让事情对我来说更容易,我试图让 R 以通用方式显示 names/labels 而不是 1-3,即不管我是否使用表格、箱线图等。但是,我无法正常工作。
我试过了
data$var <- ordered(data$var,
levels = c(1, 2, 3),
labels = c("Low", "Medium", "High"))
在我这样做之后,
boxplot(data$var)
不再有效。为什么不呢?
假设您要绘制的自变量已经是一个因素,这里是重新排序水平和标签的一般方法:
# Let's say you have a factor in the default alphabetical order
my.fac <- factor(LETTERS[1:3])
str(my.fac)
# Now you want to reorder it arbitrarily:
levels(my.fac) <- list(A = "A", C = "C", B = "B")
str(my.fac) # they have been reordered
# You can also use this method to rename the levels,
# with or w/o changing the order:
levels(my.fac) <- list("Low" = "A", "Med" = "B", "High" = "C")
str(my.fac)
# The general format is list("new" = "old")
如果您的原始数据不是一个因素,那么您可以从 as.factor
开始强制转换。
该命令无效,因为 boxplot
期望第一个参数(x
参数)为数字。
如果您只是在寻找一个简单的解决方案,您可以简单地将数据绘制为整数(因为您的因素是有序的,因此它们将以正确的整数顺序排列)抑制原始轴并添加一个新轴带有右轴标签。
boxplot(as.integer(data$var), yaxt = "n")
axis(2, at = c(1, 2, 3), labels = c("Low", "Medium", "High"))