【发布时间】:2013-03-15 10:54:26
【问题描述】:
我有一个文本文件。我想做一些如下所示的计算(移动平均)并写出结果。该文本文件包含 15 列和 601 行。
columns <- paste0("X", 1:13)
ref <- read.table("D:\\DAS_asc.txt", sep="",header=TRUE)
library(zoo)
mean <- lapply(columns, function(column) {
rollapply(ref[[column]], 5, FUN = mean,na.rm=TRUE, fill=NA) })
当我刚刚输入“mean”查看结果时,我发现计算不正确(我手动进行了检查!)。我认为这可能是 moveave 函数本身,但我检查并运行良好:
s=c(1,5,2,4)
rollapply(s, 2, FUN = mean,na.rm=TRUE, fill=NA)
[1] 3.0 3.5 3.0 NA
rollapply(s, 3, FUN = mean,na.rm=TRUE, fill=NA)
[1] NA 2.666667 3.666667 NA
我想知道当我们对文本文件执行此操作时出了什么问题?
文件的前两行:
"0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14"
"2" 0.0493461075417879 0.0262911450465596 0.0426611743228151 0.0954854469641096 0.0933782886825547 0.218212200747129 0.285405481705908 0.226218243796976 0.146648210899044 0.115716572518044 0.0675501818197432 0.069120070466305 0.281314574594234 0.364434947521643 0.0124844383491671
【问题讨论】:
-
是的,但我在这里指定了 1 到 13:
columns <- paste0("X", 1:13) -
您要移动一列的移动平均线,还是每行 13 列的移动平均线?
-
@JonssonSali 为什么你在谈论文本文件?我认为问题只是计算 data.frame 的 13 列/变量的移动平均值。请尽量清楚并提供可重复的示例。
标签: r dataframe zoo lapply moving-average