2013-04-16 31 views
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 

并没有有意义的输出。

回答

7

当你调用with(data, barchart(V1))你调用类因子的对象barchart并呼吁barchart.default,它调用的barchart(table(V1))相当于(因而呼吁barchart.table)生产所需的情节。

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

with(data, barchart(table(V1, V2)) 

enter image description here

然后可以使用groups = TRUE设置最后维度分组变量

with(data, barchart(table(V1, V2), groups = TRUE)) 

enter image description here

如果你想使用的公式方法,你w生病必须事先自己计算出数值。

例如

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

+0

在我的(在Ubuntu 12.04 - [R版本2.14.1(2011-12-22)),基团R版本= TRUE没有效果,并且这两块地块看起来都一样。我似乎也没有'data.table'包,是否需要单独安装? – saffsd

+0

未能及时编辑以前的评论。 'data.table'是第三方包,可以用'install.packages(“data.table”)'安装。 – saffsd

+0

@saffsd - 是的,'data.table'是'CRAN'提供的一个软件包。你使用的是什么版本的“晶格”。我使用'0.20-15'(和R 3.0.0)。也许你应该更新'lattice'。 '晶格'版'0.20.10'(我可以测试的最早的)不能正常工作。 – mnel

相关问题