gpt4 book ai didi

r - 按月订购数据框

转载 作者:行者123 更新时间:2023-12-02 01:07:04 24 4
gpt4 key购买 nike

我已经计算了这个 data.frame 中每月的最大计数:

counts <- data.frame(year = sort(rep(2000:2009, 12)), month = rep(month.abb,10), count = sample(1:500, 120, replace = T))

library(plyr)
count_max <- ddply(counts, .(month), summarise, max.count = max(count))


month max.count
1 Apr 470
2 Aug 389
3 Dec 446
4 Feb 487
5 Jan 473
6 Jul 460
7 Jun 488
8 Mar 449
9 May 488
10 Nov 464
11 Oct 483
12 Sep 394

我现在想按 month.abb 向量对 count_max 进行排序,以便 month 按照通常的顺序排列一月到十二月。这是我尝试过的:

count_max[match(count_max$month, month.abb),]

...但是没有用。如何按 Jan-Dec 的顺序排列 count_max$month

最佳答案

没有转换的替代:

count_max[order(match(count_max$month, month.abb)), ]
# month max.count
# 5 Jan 466
# 4 Feb 356
# 8 Mar 496
# 1 Apr 489
# 9 May 498
# 7 Jun 497
# 6 Jul 491
# 2 Aug 446
# 12 Sep 414
# 11 Oct 490
# 10 Nov 416
# 3 Dec 475

请注意,在您的示例中,match(count...) 返回给定月份在 month.abb 中的位置,这是您要排序的依据.你真的很接近,但你不是按那个向量排序,而是按它进行子集化。因此,例如,August 是您原始 DF 中的第 2 个值,但 month.abb 中的第 8 个值,因此您的子集向量中第 2 个值的匹配值为 8,这意味着您是将原始数据框的第 8 行(在您的情况下为 3 月)放入新 DF 的第二个位置,而不是将原始 DF 中的第 2 行排到新 DF 的第 8 个位置。

这种区别有点让人费解,但如果你仔细想想,它应该是有道理的。

关于r - 按月订购数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21316341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com