условное согласие по месяцам в наборе данных с использованием R - PullRequest
0 голосов
/ 17 мая 2018

У меня есть фрейм данных со значениями столбцов, такими как 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 голосов
/ 17 мая 2018

Вы можете создать столбец 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...