【发布时间】:2018-07-13 07:22:18
【问题描述】:
我有一个数据框,其中变量(var1)以秒为单位表示。我想在不同的时间间隔(10 秒的间隔直到 500 秒)计算每个样本的 var1 的平均值。 数据框如下所示:
sample time var1
S1 1 3.5
S1 2 6.3
S1 3 7.8
S1 4 20.5
S1 … ...
S1 530 4.5
S2 1 6.7
S2 2 20.3
S2 3 5.4
S2 … ...
S2 710 70.3
...
我要获取的数据框是这样的
Sample var1_mean10:20sec var1_mean20:30sec .... var1_mean490:500sec
S1
S2
..
所以我写了这段代码:
setwd("…")
A <- read_excel("dati.xlsx")
for (cat in unique(A$sample))
{
A.s <- subset(A, A$sample == cat)
cuts <- cut (A.s$time, breaks=seq.int(from = 0, to = 500, by = 10))
d <- by (A.s$var1, cuts, mean)
Y<-data.frame(d)
j <- t(Y)
write.csv(Y, file = paste(cat, "var1", sep = "_"))
}
但是当我运行它时,我收到错误消息:Error in as.data.frame.default(x[[i]], optional = TRUE) : cannot coerce class ""by"" to a data.frame
计划是最终合并所有不同的 csv。
【问题讨论】:
-
请输入(yourdata[1:10, ])。这很有帮助。