2012-01-03 70 views
1

我想根據列B的值來查看數據框中列的一系列直方圖,其中我查看列A的頻率(文本描述符) (一個號碼)。我想改變B值的截止值,並製作一系列直方圖來查看分佈的樣子。用於表中的R數據幀的oneliner子集

現在我使用:

x <- data[data$B> 10,] 
y <- table(x$A) 
hist(y) 

,我可以爲一些B的值運行此不過,我想有一個襯墊這樣的:

hist(table(data$A where data$B > 10)) 

但我無法獲得正確的語法。任何人都有建議?

+0

這將做到這一點:HIST(表(數據[$ B> 10,] $ A) – zach 2012-01-03 01:43:48

回答

2

簡單的子集的data$a代替data

hist(table(data$a[data$b > 10])) 
+0

當我這樣做時,我得到「不正確的維數」。但是我可以在子集之後放置$ Column名稱。 – zach 2012-01-03 01:46:59

+0

你上面的代碼不一致,所以你可能有一個錯字?您也可以使用數據[數據$ B> 10,「A」]或其他形式... – 2012-01-03 02:01:36

+0

你是對的。我輸入這個:hist(table(data $ a [data $ b> 10,]))這個逗號正在殺死我! – zach 2012-01-03 02:04:14

1
library(ggplot2) 
ggplot(subset(data,B>10),aes(A)) + geom_histogram() 
+0

感謝這個工作,但ggplot花了很多 - 我想象是因爲它需要一個非常精細的箱體,所以它繪製了更多的線條 – zach 2012-01-03 01:50:36

+0

您可以像這樣調整binwidth:geom_histogram(binwidth = 0.1)。您可以輕鬆使用其中一種plyr函數來分割數據和自動創建單獨的直方圖(在2-3行代碼中) – Maiasaura 2012-01-03 01:54:40

+0

謝謝@maiasaura,但ggplot解決方案正在使我的電腦流失,其中簡單的情節是瞬間的。 – zach 2012-01-03 02:05:53