【发布时间】:2016-03-29 08:20:02
【问题描述】:
这段代码:
Group <- rep(c("A", "B", "C"), each = 3)
Days <- c(21,21,19,18,21,21,11,21,19)
State <- c("OK", "NOK", "OK", "OK", "NOK", "OK", "OK", "OK", "NOK")
data <- data.frame(Group = Group, Days = Days, State = State)
创建这个数据框:
> data
Group Days State
1 A 21 OK
2 A 21 NOK
3 A 19 OK
4 B 18 OK
5 B 21 OK
6 B 21 OK
7 C 11 NOK
8 C 21 OK
9 C 19 NOK
我经常使用dplyr 中的group_by 和summarizes 来获取组的参数(例如A、B、C)。但我想不出一种简单的方法来获取每组的 OK 和 NOK 的数量(例如 NOK 百分比)。我期望的结果是:
> result
Group %NOK
1 A 33.3
2 B 0
3 C 66.6
在进一步的步骤中,我希望使用其他条件来计算比例。例如:计算 NOK 的数量,其中每组的天数 > 20。我真正直接的解决方案是:
data %>% group_by(Group) %>% nrow(filter(Days < 20, State == "NOK")) / n() * 100
但如果你能给我一个解决方案,那就太好了;)
【问题讨论】: