2013-08-27 975 views
2

我有兩週的R經驗,並會感謝您的幫助。計算R中頻率的百分比

我有一個用count()構造的數據表,我想按類別計算頻率的百分比。 因此,如果這是我的數據幀:

name cat1 cat2 freq 
A  1 1 32 
A  1 0 56 
A  0 1 36 
A  0 0 25 
B  1 1 14 
B  1 0 68 
B  0 1 58 
B  0 0 90 

我想通過名稱和CAT1計算百分比(CAT2 = 1,0爲總)。 我有一些數據幀,對於一些名稱,它可能只有cat1 = 0 & cat2 = 0,並且由於不同的結構,我不能直接做到這一點。例如,第一行將是(32 /(32 + 56))×100,第四行(25 /(25 + 36))×100。

任何想法?

謝謝

+0

你能舉個例子說明你的意思是按頻率的百分比嗎?謝謝 – Mayou

+0

歡迎來到SO。你能否告訴我們百分比的分母是什麼? – Metrics

回答

10

您可能想嘗試使用data.table。如果使用大型表格,您還可以獲得速度優勢。

library(data.table) 
#if your data is already stored as a data frame, 
#you can always skip the next step and continue with data <- data.table(data) 

data <- data.table(name=rep(c("A","B"), each=4), cat1=c(1,1,0,0,1,1,0,0), cat2=c(1,0,1,0,1,0,1,0), freq=c(32,56,36,25,14,68,58,90)) 
data[, percen := sum(freq), by=list(name,cat1)] 
data[, percen := freq/percen] 
data 
> data 
    name cat1 cat2 freq percen 
1: A 1 1 32 0.3636364 
2: A 1 0 56 0.6363636 
3: A 0 1 36 0.5901639 
4: A 0 0 25 0.4098361 
5: B 1 1 14 0.1707317 
6: B 1 0 68 0.8292683 
7: B 0 1 58 0.3918919 
8: B 0 0 90 0.6081081 

希望這會有所幫助。

+0

非常有幫助,謝謝! – user2721827

+1

很高興能傳播data.table的福音。迄今爲止我發現的一個更好的工具。 – user2627717

+1

+1羞愧問題已關閉。對於答案是「prop.table」的副本?因此我重新投票。如果要重複關閉,那肯定比這更好! –