gpt4 book ai didi

r - 如何使用dplyr在R中按日期过滤并将月份分组在一起

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

我有一个看起来像这样的数据框(我们称其为df1)。

Date          Price
2014-08-06 22
2014-08-06 89
2014-09-15 56
2014-06-04 41
2015-01-19 11
2015-05-23 5
2014-07-21 108

数据框中还有其他变量,但由于我不需要它们,因此我们暂时将其忽略。

我以前已经订购了
df2 <- df1[order(as.Date(df1$Date, format="%Y/%m/%d")),]

然后创建一个仅包含一个月值的数据框,例如,仅显示2015年9月的日期...
september2015 <- df2[df2$Date >= "2015-09-01" & df2$Date <= "2015-09-30",]

我在2015年和2014年的所有月份中都做到了这一点。
然后,我需要在每个给定的月份内创建平均价格。我已经通过...
mean(september2015$Price, na.rm = TRUE)

显然,这是很长且乏味的,并且涉及许多代码行。我试图通过使用dplyr包使我的代码更高效。

到目前为止,我有...
datesandprices <- select(df2, Date, Price)

datesandprices <- arrange(datesandprices, Date)

summarise(datesandprices, avg = mean(Price, na.rm = TRUE))

或更简单的形式...
df1 %>%
select(Date, Price) %>%
arrange(Date) %>%
filter(Date >= 2014-08-06 & Date =< 2014-08-30)
summarise(mean(Price, na.rm = TRUE))

筛选器行对我不起作用,我不知道如何使用此方法按日期筛选。我想获取每个月的均值而不必一一计算-理想情况下,将月均值提取到新的数据框或新列中,例如...
Month         Average
Jan 2014 x
Feb 2014 y
...
Nov 2015 z
Dec 2015 a

我希望这是有道理的。我在stackoverflow上找不到任何可用于日期的东西,试图做与此类似的事情(除非我正在搜索错误的函数)。非常感谢!

最佳答案

我在您的数据集中做了一个单独的列,仅包含年份和月份。然后,我在该列上做了一个group_by以获取每个月的收入。

Date <- c("2014-08-06", "2014-08-06", "2014-09-15", "2014-06-04", "2015-01-19", "2015-05-23", "2014-07-21")
Price <- c(22,89,56,41,11,5,108)

Date <- as.Date(Date, format="%Y-%m-%d")

df <- data.frame(Date, Price)
df$Month_Year <- substr(df$Date, 1,7)
library(dplyr)

df %>%
#select(Date, Price) %>%
group_by(Month_Year) %>%
summarise(mean(Price, na.rm = TRUE))

关于r - 如何使用dplyr在R中按日期过滤并将月份分组在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45841483/

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