Как отсортировать или заказать по месяцам? - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть фрейм данных, и я вывел таблицу в соответствии с моим требованием с xtabs:

df1<-data.frame(
  Year=sample(2016:2018,100,replace = T),
  Month=sample(month.abb,100,replace = T),
  category1=sample(letters[1:6],100,replace = T),
  catergory2=sample(LETTERS[8:16],100,replace = T),
  lic=sample(c("P","F","T"),100,replace = T),
  count=sample(1:1000,100,replace = T)
)

Код:

xtabs(count~Month+category1+lic,data=df1)

Выход:

, , lic = F

     category1
Month    a    b    c    d    e    f
  Apr    0    0    0    0    0    0
  Aug  418    0    0    0    0  208
  Dec  628    0    0    0    0    0
  Feb    0    0    0  968    0  701
  Jan  388    0    0    0    0    0
  Jul  771    0    0    0    0 2514
  Jun  987  913    0  216    0  395
  Mar  454    0    0    0    0  314
  May    0 1298    0    0    0    0
  Nov  906    0  526  262    0 1417
  Oct  783    0  853  336  310  286
  Sep    0    0    0    0  928    0

, , lic = P

     category1
Month    a    b    c    d    e    f
  Apr   13    0    0    0    0    0
  Aug    0  774    0    0  416  652
  Dec    0    0    0  241  462  123
  Feb  150  857    0  169    6    1
  Jan  954    0  567    0    0    0
  Jul  481    0    0    0    0  846
  Jun    0    0    0  484    0  535
  Mar  751    0    0    0  241    0
  May    0  549   37    0    0    2
  Nov  649    0    0    0  154  692
  Oct    0    0  182    0    0    0
  Sep    0    0  585    0  493    0

, , lic = T

     category1
Month    a    b    c    d    e    f
  Apr    0    0  410    0    0    0
  Aug    0    0    0    0    0    0
  Dec    0    0  833  289  811    0
  Feb    0 1223    0  716  366  552
  Jan  555    0  802    0 1598    0
  Jul    0    0   69    0    0  696
  Jun    0    0    0    0  190    0
  Mar    0 1165    0    0    0    0
  May  979  951  676    0    0    0
  Nov  267    0   79 1951  290  530
  Oct  230   78    0  679  321    0
  Sep    0  871    0    0    0    0

Вывод соответствует моему требованию, но порядок месяца не на месте.

Могу ли я добиться того же с любым пакетом? или какие-то самые простые способы получить те же данные?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Надеюсь, это то, к чему стремится OP:

library(tidyverse)
df1<-as.tibble(df1)
df1 %>% 
 arrange(Month)


     Year Month category1 catergory2 lic   count
   <int> <fct> <fct>     <fct>      <fct> <int>
 1  2016 Apr   a         N          F       745
 2  2016 Apr   b         K          F       346
 3  2016 Apr   b         O          T        61
 4  2016 Apr   a         J          T       680
 5  2018 Apr   d         O          P       308
 6  2017 Apr   e         M          F       408
 7  2016 Apr   b         P          P       474
 8  2017 Apr   b         O          P       332
 9  2016 Apr   b         P          F       321
10  2017 Apr   e         N          T       384
# ... with 90 more rows
0 голосов
/ 09 ноября 2018

Я предлагаю сделать Month упорядоченным множителем:

df1$Month <- ordered(df1$Month, levels = month.abb)

xtabs(count~Month+category1+lic,data=df1)
#, , lic = F
#
#     category1
#Month    a    b    c    d    e    f
#  Jan    0    0    0    0  563    0
#  Feb    0    0    0  826    0    0
#  Mar    0    0    3  685  443  814
#  Apr    0  848    0  474    0    0
#  May  192  412 1942    0  803  545
#  Jun  593    0    0    0  520  807
#  Jul  829  745    0    0  926    0
#  Aug 1474    0  603  376    0  706
#  Sep    0    0    0  173    0    0
#  Oct    0    0  661  915  814    0
#  Nov    0  881    0    0    0    0
#  Dec    0    0    0    0    0    0
#</snip>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...