3

给定如下数据框,具有 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

并且没有有意义的输出。

4

1 回答 1

7

当您调用时,with(data, barchart(V1))您正在调用barchart类因子的对象并且它正在调用barchart.default,它调用等效于barchart(table(V1))(并因此调用barchart.table)产生您想要的情节。

如果你想同时拥有V1V2包括你必须在你的表中使用它们,即。

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))

于 2013-04-16T04:41:45.813 回答