2013-04-16 55 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

相關問題