我有三個維度的一組數據,從計數:尋找比例
df <- data.frame(type = c("A", "B", "B", "A", "A", "C", "B", "C"), group = c("Tp", "Tp", "Tp", "Tp", "Fc", "Fc", "Fc", "Fc"), size = c(10,20,30,40,10,20,30,40), count = c(1, 4, 2, 3, 2, 10, 2, 3))
type group size count
1 A Tp 10 1
2 B Tp 20 4
3 B Tp 30 2
4 A Tp 40 3
5 A Fc 10 2
6 C Fc 20 10
7 B Fc 30 2
8 C Fc 40 3
我想找到每個數佔比例但在既有型又維度分組子集。也就是說,例如,「Tp」組和「A」組的大小爲10的組合是什麼?
我以爲有可能是aggregate
或plyr
包內的東西,但會根據子集計算每行數據,但我似乎無法找到它。我最大的努力是使用apply:
df$prop <- apply(df, 1, function(x) as.numeric(x["count"])/sum(df[df$type==x["type"] & df$group==x["group"], "count"]))
type group size count prop
1 A Tp 10 1 0.2500000
2 B Tp 20 4 0.6666667
3 B Tp 30 2 0.3333333
4 A Tp 40 3 0.7500000
5 A Fc 10 2 1.0000000
6 C Fc 20 10 0.7692308
7 B Fc 30 2 1.0000000
8 C Fc 40 3 0.2307692
我只是想知道是否有更簡單的方法來做到這一點?如果沒有,我會把它寫成一個自定義函數。
謝謝。
你df'的'定義缺少大小柱。 –
已更新。謝謝! – MattLBeck