【发布时间】:2018-08-19 01:49:27
【问题描述】:
我对循环不是很有经验,所以我不确定我在哪里出错了...... 我有一个看起来像这样的数据框:
month year day mean.temp mean.temp.year.month
1 1961 1 4.85 4.090323
1 1961 2 4.90 4.090323
1 1961 3 2.95 4.090323
1 1961 4 3.40 4.090323
1 1961 5 2.90 4.090323
可在此处找到显示 2 年 3 个月的数据集: https://drive.google.com/file/d/1w7NVeoEh8b7cAkU3cu1sXx6yCh75Inqg/view?usp=sharing
我想按年和月对这个数据框进行子集化,这样我就可以每年和每个月运行一个 nls 模型。由于我的数据集包含 56 年(每年有 12 个月),因此将提供 672 个模型。然后我想将参数估计值存储在一个单独的表中。
我已经创建了这段代码,但我不知道为什么它只给了我第 12 个月(所有 56 年,但只有第 12 个月)的参数估计值:
table <- matrix(99999, nrow=672, ncol=4)
YEARMONTHsel <- unique(df_weather[c("year", "month")])
YEARsel <- unique(df_weather$year)
MONTHsel <- unique(df_weather$month)
for (i in 1:length(YEARsel)) {
for (j in 1:length(MONTHsel)) {
temp2 <- df_weather[df_weather$year==YEARsel[i] & df_weather$month==MONTHsel[j],]
mn <- nls(mean.temp~mean.temp.year.month+alpha*sin(day*pi*2/30+phi),
data = temp2, control=nlc,
start=list(alpha=-6.07043, phi = -10))
cr <- as.vector(coef(mn))
nv <-length(coef(mn))
table[i,1:nv] <- cr
table[i,nv+1]<- YEARsel[i]
table[i,nv+2]<- MONTHsel[j]
}
}
我尝试了几个选项(即不使用嵌套循环),但我没有得到任何结果。 任何帮助将不胜感激!谢谢。
【问题讨论】:
-
也许这篇文章可以提供帮助:stackoverflow.com/questions/51796317/…。如果您仍然遇到问题,请发布一些数据(可能是 3 个月),这样会更容易提供帮助。
-
感谢您的帮助!是的,我可以使用 tidyverse 进行子集化和建模工作,但是输出太长了,我必须手动将每个 672 个参数复制到另一个表中。我不知道如何用 tidyverse 自动化它,所以我认为循环会做所有事情?我将编辑我的问题以发布更多数据,干杯!
-
当你用更多数据更新帖子时,我会看看是否能提供帮助。