按组对行进行计数

暗影

这段代码:

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

我经常使用group_bysummarizesdplyr做得到参数组(如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

但是,如果您能给我一个解决方案,那实际上是有效的;)

阿克伦

我们可以用 summarise

data %>% 
   group_by(Group) %>% 
   summarise(NOKPer = round(100*sum(State=="NOK")/n(),2))
#     Group NOKPer
#    (chr)  (dbl)
# 1     A  33.33
# 2     B   0.00
# 3     C  66.67

对于第二种情况

data %>%
    group_by(Group) %>% 
    summarise(NOKPer = round(100*sum(State=="NOK" & Days >20)/n(), 2))

使用以下方法可以轻松解决 base R

prop.table(table(data[-2]),1)

第二个条件

prop.table(table(subset(data, Days>20, select=c("Group", "State"))),1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL查询可对按ID分组的行进行计数,但可限制每个组的计数

DataFrames.jl:在定义计数列名称时按组对行进行计数

按组对数据表中具有某些值的行进行计数

按列对不同的连续行进行计数

条件满足时对每个组中的行进行计数

按NaN计数的降序对数据框的行进行排序

按两行进行计数和汇总

SQL Oracle中按行进行条件条件项计数

使用分组依据按2列对行进行计数

按值组的连续日期范围对行进行分组

如何在sql中按组对行进行排序

根据列值按组对行进行聚类

使用两列按组对行进行排序

SQL Server 按组和条件对行进行排名

JPA计数查询可按查询对组的总结果行进行计数

SQL对一组列等于特定值的组中的行进行计数

从条件开始对行进行计数

用数据对行进行计数

按组对总样本和阳性样本进行计数

按组对行的顺序进行计数,并在每次组更改时重新开始计数

按组计数(熊猫)

LINQ查询以按顺序在非组对象之间按属性组对对象进行计数

当某个子组因子为0时,按组和子组对行数进行计数

按条件对行进行分组

根据具有条件的列值按组对行进行聚类

在数据框中按组对行进行排序,排序或排序

对行进行分组并对每个组进行排序

在JPA中按所需顺序对每个组的子行进行排序,并在每个组中采用所需的顶行数

按特定标识符对行进行分组并更新组 ID 列以跟踪它们属于哪个组