我已附上a screen shot of my data file。每列代表探针以半小时间隔收集的每日数据。我想在CSV文件中输出每个探针的每日平均值。到目前为止,我有以下代码
sink('d2.csv')
x<-1
y<-48
for(i in 1:123) {
W=E.2.[x:y]
M=mean(W)
print(M)
x<-x+48
y<-y+48
}
sink()
分别对每列进行平均,并将其写入CSV文件。我是什么 我们要做的是拥有一个可以在所有列上运行的代码并将其写入CSV文件。
TIMESTAMP E.2. E.3. E.4. E.5. E.6. E.7. E.8. E.9. E.10. E.11. E.12. E.13.
1 3/16/2013 0:00 108.1 166.4 238.41 261.2 373.5 324.27 278.94 514.2 629.8 607.9 334.9 323.59
2 3/16/2013 0:30 109.5 165.6 237.4 261.19 367.1 324.2 278.53 513.2 631.8 609.3 335.0 323.19
3 3/16/2013 1:00 110.6 165.5 236.48 261.17 368.1 324.2 278.13 512.4 631.2 609.3 335.0 323.56
4 3/16/2013 1:30 111.4 165.6 235.69 261.13 375.1 324.2 277.49 511.6 629.1 606.6 335.2 323.5
5 3/16/2013 2:00 112.2 165.7 234.88 261.09 379.6 324.21 276.85 510.6 629.5 607.3 335.3 323.67
6 3/16/2013 2:30 112.3 166.2 234.3 261.09 378.2 324.21 276.38 509.9 630.7 607.6 335.6 323.88
答案 0 :(得分:1)
如果不了解您的数据结构以及您正在尝试做的事情,很难确切知道,但通过使用rollapply函数,您需要的所有内容都可以放在两行中代码(假设df
是您的数据框的名称):
library(zoo)
write.csv(rollapply(df[,-1],48,mean,by = 4),"d2.csv")
关于修改:我使用了by = 4
,因为您的代码中包含x <- x + 4
行。你似乎想要增加48点。在连续的窗口现在不相交的意义上,它不再是一个滑动的意思,尽管这种方法仍然有效:
write.csv(rollapply(df[,-1],48,mean,by = 48),"d2.csv")
每列会给你123行。