给定一个如下所示的具有2个或更多因子的数据帧:
data <- data.frame(V1=sample(c('A','B','C'), 50, T), V2=sample(c('X','Y'),50,T))我可以独立地生成一个因子列表的柱状图,例如:
library(lattice)
with(data, barchart(V1))如何生成以第二个因子值为条件的多面板图?我希望使用的语法是:
with(data, barchart(V1 | V2))但这会产生以下警告:
Warning message:
In Ops.factor(V1, V2) : | not meaningful for factors并且没有有意义的输出。
发布于 2013-04-16 12:41:46
当您调用with(data, barchart(V1))时,您就是在调用barchart,而它调用的是barchart.default,后者调用barchart(table(V1))的等价物(并因此调用barchart.table)来生成您想要的绘图。
如果你想同时包含V1和V2,你必须在你的表格中使用它们,即。
with(data, barchart(table(V1, V2))

然后可以使用groups = TRUE将最后一个维度设置为分组变量
例如
with(data, barchart(table(V1, V2), groups = TRUE))

如果你想使用公式方法,你必须事先自己计算这些值。
例如
library(data.table)
DT <- data.table(data)
barchart(V1~N|V2,DT[, .N,by= list(V1,V2)])它给出了与with(data, barchart(table(V1, V2), groups = TRUE))相同的结果
https://stackoverflow.com/questions/16028792
复制相似问题