gpt4 book ai didi

r - 在 R 中按月查找列的平均值/平均值时出错

转载 作者:行者123 更新时间:2023-12-02 08:32:21 25 4
gpt4 key购买 nike

我有这个数据框,我想用每个月的平均值替换/形成新的数据集。

    month    value
Oct. 2012 52.7
Nov. 2012 53.0
Dec. 2012 54.1
Jan. 2013 53.1
Feb. 2013 53.6
Mar. 2013 53.8
Apr. 2013 54.1
May. 2013 54.6
Jun. 2013 54.8
Jul. 2013 54.3
Aug. 2013 54.5
Sep. 2013 54.5
Oct. 2013 54.0
Nov. 2013 54.2
Dec. 2013 54.8
Oct. 2012 37.2
Nov. 2012 37.4
Dec. 2012 38.4
. .
. .

如您所见,对于每年的每个月,例如 Oct。 2012 年11 月。 2012等有多个值。现在要在数据框中获取每个单独月份的平均值,我执行了这个命令

data_mean <- data_frame %.% group_by(month) %.% summarize(value = mean(value))

它确实正确找到了每个月的平均值但在输出中它按字母顺序对月份重新排序。所以在输出 Oct. 2012Apr 之后。 2013 等等,而它应该早于。我想明智地计算平均月,但不想按字母顺序重新排序输出。如何修改上述命令或有一些更短的方法。

最佳答案

month 列更改为具有适当排序级别的因子:

data_frame %>% 
mutate(month = factor(substr(month, 1, 3), month.abb)) %>%
group_by(month) %>%
summarize(value = mean(value))

给予:

   month    value
1 Jan 53.10000
2 Feb 53.60000
3 Mar 53.80000
4 Apr 54.10000
5 May 54.60000
6 Jun 54.80000
7 Jul 54.30000
8 Aug 54.50000
9 Sep 54.50000
10 Oct 47.96667
11 Nov 48.20000
12 Dec 49.10000

更新

问题要求按月提供数据;然而,在评论中,这被修改为按年/月要求。在这种情况下,使用 zoo 将其转换为 yearmon,然后再转换为数字(因为 dplyr 分组似乎不支持 yearmon),最后可选择返回 yearmon:

library(zoo)

data_frame %>%
mutate(month = as.numeric(as.yearmon(as.character(month), "%b. %Y"))) %>%
group_by(month) %>%
summarize(value = mean(value)) %>%
mutate(month = as.yearmon(month))

关于r - 在 R 中按月查找列的平均值/平均值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25318304/

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