2013-08-23 70 views
0

我想用R barplot比較變量的計數或相對頻率。如何分組變量並在R中做barplot?

這是一個示例數據幀

 Q7B1 Q7A2 Q7B2 Q7A3 Q7B3 
    1 NA 2 NA 1 2 
    2 NA 2 NA 1 2 
    3  2 2 NA 1 2 
    4  2 2 NA 1 2 
    5 NA 2 NA 1 2 
    6 NA 2 NA 2 NA 
    7  2 2 NA 1 2 
    8 NA 2 NA 2 NA 
    9 NA 2 NA 2 NA 
    10 2 2 NA 1 2 

我想創建一個barplot其中每個變量(Q7B1,Q7B2,Q7B3,...,Q7B8)表示欄。每個變量都有值(1,2,3)條的高度將表示每個變量的值「2」的計數或相對頻率。我如何在R中做到這一點?

回答

1

如果您的數據幀被命名爲dat,你可以做:

barplot(colSums(dat == 2, na.rm = TRUE)) 

enter image description here

爲了獲得一個情節相對頻率,可以使用下面的命令:

barplot(colSums(dat == 2, na.rm = TRUE)/nrow(dat)) 
+0

嗨斯文!這次真是萬分感謝!對於相對頻率來說,似乎相對頻率太小了。我將它更改爲colSums而不是colMeans,並將其乘以100以獲得百分比。這似乎是正確的。順便說一下,你是如何在顯示的圖形中添加變量標籤的?我的圖沒有變量標籤。 – dixi

+0

@dixi對,'colSums'是正確的。變量名由'colSums'返回。這些是數據幀(或矩陣)'dat'的列名稱。 –

+0

我明白了。感謝Sven! – dixi

0

首先你想要得到的2頻率中的每一列:

freqs <- apply(dataframe, 2, function(column) { 
    length(which(column == 2))/nrow(dataframe) 
}) 
names(freqs) <- names(dataframe) # may be redundant 

然後,你可以簡單地barplot它:

barplot(freqs) 
+0

@Manetheran嗨!我是否需要將變量「列」替換爲每個變量名稱? (如Q7B1等)我似乎無法做到這一點。 – dixi