我有以下数据框架结构:
admDatabaseConnector
我希望计算每个 Score V1 V2 V3 ...
1 12 15 0
2 17 25 13
3 0 0 18
1 0 12 25
3 11 41 0
3 18 0 0
组(在我的示例中为1/2/3)和每列(V1 / V2 / V3 ...)的值大于的行数0.
所以,我想得到以下结果:
score
我开始使用 Score V1 V2 V3 ...
1 50% 100% 50%
2 100% 100% 100%
3 67% 33% 33%
来解决它,但我坚持使用过滤部分:
dplyr
答案 0 :(得分:0)
对于基数R,我们可以使用aggregate
,对于每个Score
,我们可以计算大于0的值与值总数的比率。
aggregate(.~Score, hun, function(x) length(x[x>0])/length(x) * 100)
#Score V1 V2 V3
#1 1 50.00000 100.00000 50.00000
#2 2 100.00000 100.00000 100.00000
#3 3 66.66667 33.33333 33.33333
我不确定dplyr
是否有更好的选择。但是,一种类似的方式是
library(dplyr)
hun %>%
group_by(Score) %>%
summarise_each(funs(length(.[.>0])/length(.) * 100))