使用R的数据集中的计数月份的条件同意门

时间:2018-05-17 19:39:25

标签: r aggregate aggregate-functions

我有一个数据框,其列值为Job_code,Months,Days。

我需要在几天内将条件与条件汇总(< = 30,介于30到60之间,> 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

请原谅对齐,因为一旦我点击保存或提交

,它就会被更改

“输出”列必须类似于月份,<= 30天,30到60天,> 60天,计算累计数月

1 个答案:

答案 0 :(得分:0)

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

df$group <- ifelse(df$Days <= 30, "0-30", ifelse(df$Days <= 60, "30-60", ">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