使用 R 在数据集中按月计算的条件一致

Posted

技术标签:

【中文标题】使用 R 在数据集中按月计算的条件一致【英文标题】:conditional Agreegate of count month wise in a dataset using R 【发布时间】:2018-10-28 04:32:24 【问题描述】:

我有一个列值为 Job_code、Months、Days 的数据框。

我需要将月份与 Days (60)等条件进行汇总

普通聚合函数只给出按月聚合的数据(但我没有看到这样的条件聚合)

输入数据:

df <- data.frame(
            'Job Code' = c(1,1,8,9,1,1,2,3,4,2,3,4,5,6,7,5,6,7,2,3,4,8,4),
            'Months' = c('Apr', 'May','Mar','Jan','Feb','Jun','Jul','Aug','Sep','Dec','Nov','Oct','Oct','Nov','Sep','Jun','Jul','Apr','Mar','May','Jan','Feb','Dec'),
            'Days' = c(30,30,60,80,30,30,60,80,30,30,60,80,30,30,60,80,40,50,90,60,80,40,50)
          )

输出必须是:

Months 0-30 30-60 >60 Total 
Jan 0 0 2 2 
Feb 1 1 0 2 
Mar 0 1 1 2 
Apr 1 1 0 2 
May 1 1 0 2 
Jun 1 0 1 2 
Jul 0 2 0 2 
Aug 0 0 1 1 
Sep 1 1 0 2 
Oct 1 0 1 2 
Nov 1 1 0 2 
Dec 1 1 0 2 
Total 8 2 5 23

请原谅对齐方式,因为一旦我点击保存或提交,它就会改变

输出列必须类似于月、60 天,并按月汇总计数

【问题讨论】:

【参考方案1】:

您可以在数据框本身中创建一个group 列,然后根据该列进行计数:

df$group &lt;- ifelse(df$Days &lt;= 30, "0-30", ifelse(df$Days &lt;= 60, "30-60", "&gt;60"))

table(df$Months, df$group)

      >60 0-30 30-60
  Apr   0    1     1
  Aug   1    0     0
  Dec   0    1     1
  Feb   0    1     1
  Jan   2    0     0
  Jul   0    0     2
  Jun   1    1     0
  Mar   1    0     1
  May   0    1     1
  Nov   0    1     1
  Oct   1    1     0
  Sep   0    1     1

【讨论】:

以上是关于使用 R 在数据集中按月计算的条件一致的主要内容,如果未能解决你的问题,请参考以下文章

对从大型数据集中聚合的数据使用 Altair

使用 R 计算数据集中每个组的正态性

OLAP 多维数据集中计算成员中的条件

加入 PySpark 数据集中每个月的上个月数据

在 R 的数据集中将 -inf、NaN 和 NA 值替换为零

R语言加载UCI糖尿病数据集并启动Rattle GUI调用party包中的ctree函数构建条件推理树模型Rattle混淆矩阵使用R自定义编写函数通过混淆矩阵计算特异度敏感度PPVNPV