r - 如何按月排序或排序?
问题描述
我有数据框,并且根据我的要求将输出制成表格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
输出符合我的要求,但月份顺序错误。
我可以用任何包装实现同样的目标吗?或任何最简单的方法来获取相同的数据?
解决方案
我建议做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>
推荐阅读
- matlab - HPC中MATLAB中的Ho到并行点阵乘积
- arrays - 反转 shell 式大括号扩展
- python - 为什么会打印 8?简单的 Python 列表
- json - 在 Json 的值中搜索特定字符串并分配给 ruby 中的变量
- web-scraping - 如何使用 Beautiful Soup 抓取 Shopify 网站并获取所有标签(#)
- button - 如何配置 Jetbrain phpstorm 将操作按钮添加到主菜单/工具栏,例如重做和撤消按钮,而不是 CTRL+Y 和 CTRL+SHIFT+Z?
- javascript - 如何使用 NPM 脚本打开终端选项卡?
- javascript - JSHINT 为 If 语句方程引发语法错误
- android - setDynamicLinkDomain 在代码中已被弃用,但在文档中似乎并未被弃用
- c# - 项目过期 - 不再显示此对话框 - 构建还是不构建?