问题描述
具体来说,我有以下代码:
histogram(~di01a | sex,type="count",nint = 20,stripes =c("horizontal"),data = ALLBUSNEU)
它生成以下视觉效果。
变量性别可以有值 1 和 2,但它为两个直方图显示“sex”,这是第一个问题: 如何让它显示 1 和 2?
第二期: 我希望它们显示为“男”和“女”,这可能不改变变量本身吗?
解决方法
确保在 factor
列中传入 sex
。
您的代码应该如下所示:
library(lattice)
ALLBUSNEU$sex <- as.factor(ALLBUSNEU$sex)
histogram(~di01a | sex,type="count",nint = 20,stripes =c("horizontal"),data = ALLBUSNEU)
第二个问题:我希望它们显示为“男”和“女”?
这是在 lattice
中执行此操作的惯用方式,如其文档和 other referenced materials 中所述:
ALLBUSNEU$sex <- factor(ALLBUSNEU$sex,labels=c("male","female"))
histogram(~di01a | sex,data = ALLBUSNEU)
如果您担心这会改变原始列,那么创建一个额外的变量(列)以保持该列不变。
ALLBUSNEU$sexFactor <- factor(ALLBUSNEU$sex,"female"))
histogram(~di01a | sexFactor,data = ALLBUSNEU)
如果您也不想在数据框上创建新列,请复制原始数据框,并在复制的副本上进行可视化,您可以在其中执行正确的类型转换。
说明
由于我没有你的数据,我将使用 mtcars
来演示这个想法。
以下代码:
library(lattice)
histogram(~mpg | cyl,data = mtcars)
这是因为 mtcars$cyl
是数字并且不被识别为因子。 lattice
不知道如何将其与数值变量区别对待。
当我执行转换并调用相同的代码时,格子现在知道此列中的每个值都是一个因子级别,并使用其字符串表示:
library(lattice)
mtcars$cyl <- as.factor(mtcars$cyl)
histogram(~mpg | cyl,data = mtcars)