为了生成平均值,我通过R输入了大量数据。相关数据包括日期和温度读数。通常一天有多个温度读数。日期跨度约为6个月。
研究人员要求的两种标准描述如下:
平均每周–7天滚动平均(非日历周)平均最大值–7天滚动最大
因此,如果我的数据从1/1/13开始,我会对1/1/13和1/7/13之间的所有温度读数取平均值,然后对1/18/13-15/15/13依此类推。Stack上的其他地方告诉我,这实际上被称为"每年一周的平均值",尽管我承认我不太明白这不是一个移动平均值。我做了一些研究,但作为一个新手,我一直在努力理解如何解决这个问题。
对于你们之间的可视化,这本质上是我正在处理的数据类型(实际的data.frame
看起来大不相同(见下面的dput标题),有几千条记录长,但这是两个相关列的正确名称):
DATE | TEMP
-----------------
1/2/13 34.4
1/2/13 36.4
1/2/13 34.3
1/4/13 45.6
1/4/13 33.5
1/5/13 45.2
1/6/13 53.9
1/7/13 34.6
1/7/13 36.2
1/8/13 22.4
1/9/13 30.8
1/9/13 33.2
我一直在看xts库:
xts(x = NULL,
order.by = index(x),
frequency = NULL,
unique = TRUE,
tzone = Sys.getenv("TZ"),
...)
这看起来很有希望,但我不太清楚,文档也没有太大帮助。
xts(x=mydf,order.by=DATE(x),frequency=7。。。?
想法?非常感谢。
以下是dput头信息的小样本:
structure(list(RECID = 579:584, SITEID = c(101L, 101L, 101L,
101L, 101L, 101L), MONTH = c(6L, 6L, 6L, 6L, 6L, 6L), DAY = c(7L,
7L, 7L, 7L, 7L, 7L), DATE = structure(c(34L, 34L, 34L, 34L, 34L,
34L), .Label = c("10/1/2013", "10/10/2013", "10/11/2013", "10/12/2013",
"10/2/2013", "10/3/2013", "10/4/2013", "10/5/2013", "10/6/2013",
"10/7/2013", "10/8/2013", "10/9/2013", "6/10/2013", "6/11/2013","9/9/2013"), class = "factor"), TIMESTAMP = structure(784:789, .Label = c("10/1/2013 0:00",
"10/1/2013 1:00", "10/1/2013 10:00", "10/1/2013 11:00", "10/1/2013 12:00",
"10/1/2013 13:00", "10/1/2013 14:00", "10/1/2013 15:00", "10/1/2013 16:00",
"10/1/2013 17:00", "10/1/2013 18:00", "10/1/2013 19:00", "10/1/2013 2:00"), class = "factor"), TEMP = c(23.376, 23.376, 23.833, 24.146,
24.219, 24.05), X.C = c(NA, NA, NA, NA, NA, NA)), .Names = c("RECID",
"SITEID", "MONTH", "DAY", "DATE", "TIMESTAMP", "TEMP", "X.C"), row.names = c(NA,
6L), class = "data.frame")
sampledata = '
DATE TEMP
1/2/13 34.4
1/2/13 36.4
1/2/13 34.3
1/4/13 45.6
1/4/13 33.5
1/5/13 45.2
1/6/13 53.9
1/7/13 34.6
1/7/13 36.2
1/8/13 22.4
1/9/13 30.8
1/9/13 33.2
'
ex1 = read.table(text=sampledata,header=T)
library(xts)
ex1$DATE = as.Date(ex1$DATE,format='%m/%d/%y')
ex2= xts(ex1$TEMP,order.by=ex1$DATE)
xts::apply.weekly(ex2, mean)
对我来说,这听起来不像是一个移动平均线。