【问题标题】:How to choose every next month of data in R如何在R中选择每个下个月的数据
【发布时间】:2018-05-01 14:11:19
【问题描述】:

我有一个月度数据集,但并非每个月都有合适的数据可供使用。有一个我想选择的正确月份的列表。我想为每个合适的月份选择下个月的价格。

例如,这是我的数据集:

Price <- c(10,12,14,11,17,10,9,18,16,16 , 12, 13)
date <- ymd(c("1996-01-31", "1996-02-28", "1996-07-31", "1996-08-29" ,"1996-04-30" , "1996-05-28" , "1997-01-28" , "1996-09-29" , "1996-12-19", "1996-03-30" ,"1996-11-30","1996-06-30"))

Prices <- data.frame( date , Price)

这些是选择合适的月份:

proper <- ymd(c("1996-01-31", "1996-07-31" ,"1996-04-30" ,"1996-02-29" ,"1996-05-31"))

现在我想在一个数据框中有proper 下个月的价格。例如“1996-02-28”作为第一个元素,“1996-08-29”作为第二个元素的价格,以此类推

【问题讨论】:

  • 你能展示一个你想要的数据框的例子吗?我不清楚你想在这里做什么。

标签: r datetime time


【解决方案1】:

我们可以将其转换为yearmon,然后执行filter

library(zoo)
library(dplyr)
Prices %>% 
   filter(as.Date(as.yearmon(date)) %in% as.Date(as.yearmon(proper) + 1/12))
#        date Price
#1 1996-02-28    12
#2 1996-08-29    11
#3 1996-05-28    10
#4 1996-03-30    16
#5 1996-06-30    13

【讨论】:

  • 这很好用,谢谢。在您的最终答案中,日期是下个月。如果我想让最终答案中的日期成为“正确”的日期怎么办?这是因为我想在其他地方合并这些数据,现在它不会正确合并。
  • @AliEbadi 在这种情况下,只需删除+ 1/12 这是为了获得下个月即Prices %&gt;% filter(as.Date(as.yearmon(date)) %in% as.Date(as.yearmon(proper)))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 2014-07-05
  • 2017-05-03
  • 1970-01-01
  • 2021-11-01
  • 2019-01-31
  • 1970-01-01
相关资源
最近更新 更多