r - R 中 apply.monthly 的每月操作时间序列

标签 r time-series xts

问题是使用 apply.monthly 或任何其他类似的函数对数据集进行每月操作。我拥有的数据如下所示:

> minidata[1:10,]
          date Month Year TMIN
 1  1948-01-01   Jan 1948  1.1
 2  1948-01-02   Jan 1948  7.2
 3  1948-01-03   Jan 1948  5.0
 4  1948-01-04   Jan 1948  9.4
 5  1948-01-05   Jan 1948  4.4

 > tail(minidata)
     date      Month Year TMIN
 54 1948-02-23   Feb 1948  2.8
 55 1948-02-24   Feb 1948 -0.6
 56 1948-02-25   Feb 1948  1.7
 57 1948-02-26   Feb 1948  2.8
 58 1948-02-27   Feb 1948  4.4
 59 1948-02-28   Feb 1948  3.3

任务,使用我自己的函数生成月平均值:

 mymean <- function(date){
   for (j in 1:days_in_month(date)){
     avg = (1/(days_in_month(date))
           *sum(minidata$TMIN[1:days_in_month(date)])}
   return(avg)
 }

结果必须与xts包中的R函数相同:

 dat.xts <- xts(x= minidata$TMIN,order.by = minidata$date)
 > apply.monthly(dat.xts,mean)
                [,1]
 1948-01-31 2.312903
 1948-02-28 2.082143

我的函数输出正确的值:

 > mymean(minidata$date[1])
      Jan 
 2.312903 
 > mymean(dat.xts[1])
      Jan 
 2.312903

我不介意 $apply.monthly$ 是否使用该方法生成一个新列,但我必须使用我自己的函数! (这是一个例子,实际上我的功能要困难得多)。

我尝试过:

 > apply.monthly(dat.xts,function(dat.xts) mymean(dat.xts))
 Error in coredata.xts(x) : currently unsupported data type
 In addition: There were 50 or more warnings (use warnings() to see the first 50)

谢谢!

更新:days_in_month 可以在 lubridate 包中找到。它计算给定月份的天数

最佳答案

你的函数才是问题所在,而不是apply.monthly。我不知道 days_in_month 函数是在哪里定义的,但它可能不适用于 xts 对象。我认为它需要一个日期时间类。

并且您的 mymean 函数引用了一个未传递给它的对象,这不是一个好的做法,因为它会使 R 搜索 minidata

您的函数应该期望一个包含一个月数据的 xts 对象,并且仅对该数据进行操作,而不是函数范围之外的某些对象。例如:

mymean <- function(Data) {
  days <- days_in_month(index(Data)[1])
  avg <- (1/days) * sum(Data$Close)
  return(avg)
}
require(xts)
data(sample_matrix)
x <- as.xts(sample_matrix)
apply.monthly(x, mymean)

关于r - R 中 apply.monthly 的每月操作时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29680498/

相关文章:

r - Google Places API 和 R - 调用数据框中的第二列返回六个单独的列

r - 粘贴两个数据框的列

r - 如何折叠列表中的所有字符向量

r - 季节性分解包括R中的NA在内的月度数据

r - 将每日股票数据转换为时间序列对象时的问题

r - 解释 SARIMA 模型的 ACF 和 PACF 图

R: 股票数据xts数据转换后少了一列

r - 使用 MLR 包调整 rpart 中的参数?

r - 将每日级别的数据聚合到 R 中的每周级别

r - 计算 R growth of growth 中的 Credit Impulse