确保您在 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, type="count" , nint = 20, stripes =c("horizontal") , data = ALLBUSNEU)
如果您担心这会改变原始列,请创建一个额外的变量(列)以保持该列不变。
ALLBUSNEU$sexFactor <- factor(ALLBUSNEU$sex, labels=c("male", "female"))
histogram(~di01a | sexFactor, type="count" , nint = 20, stripes =c("horizontal") , data = ALLBUSNEU)
如果您也不想在数据框上创建新列,则制作原始数据框的副本,并在复制的副本上进行可视化,您可以在其中执行适当的类型转换。
说明
由于我没有你的数据,我将使用mtcars 来演示这个想法。
以下代码:
library(lattice)
histogram(~mpg | cyl, type="count" , nint = 20, stripes =c("horizontal") , data = mtcars)
产生:
这是因为mtcars$cyl 是数字,不被识别为一个因素。 lattice 不知道如何对待它与处理数字变量的方式不同。
当我执行转换并调用相同的代码时,lattice 现在知道此列中的每个值都是一个因子级别,并使用其字符串表示:
library(lattice)
mtcars$cyl <- as.factor(mtcars$cyl)
histogram(~mpg | cyl, type="count" , nint = 20, stripes =c("horizontal") , data = mtcars)
这会产生: