Я недавно столкнулся с сообщением об ошибке при запуске цикла for следующим образом:
Ошибка: объект 'Месяц1' не найден
res_org<-read.csv("XXX", sep=",", header=TRUE)
dim(res_org)
exp<-res_org
head(res_org)
exp1<-res_org
dim(exp1)
n<-length(exp1$Longitude)
i=1
for (i in 1:n){
exp$Month1<-c()
exp$Year1<-c()
Month1[i]<-exp$Month[i] - 1
if(Month1[i]<=0){
(exp1[i, 'Year1'] =(exp1$Year[i]-1))&
(exp1[i, 'Month1']=(exp1$Month[i]-1+12))
}
else{
(exp1[i, 'Year1'] = exp1$Year[i]) &
(exp1[i, 'Month1']= (exp1$Month[i] - 1))
}
}
head(exp1)
write.csv(exp1, file = "XXX")
Мне просто очень странно, что R не создает другую новую переменную Month1
на основе моей спецификации: Month1[i]<-exp$Month[i] - 1
, хотя в импортированном наборе данных у меня есть переменные для 'Месяца' и 'Года'.
Цель вышеуказанного для цикла:
Цель состоит в том, чтобы вычесть один интервал из каждого месяца (i = 1, 2, 3, ... 12), одновременно изменяя год с целью эффективной подготовки среднегодовых расчетов посредством последующего вменения кригинга.
Например, с интервалом один декабрь (12) будет преобразован в ноябрь (11), февраль (2) будет преобразован в январь (1), январь (1) будет преобразован в декабрь (12) , и так далее. Аналогично, с интервалом два декабрь (12) будет преобразован в октябрь (10), февраль (2) будет преобразован в декабрь (12), январь (1) будет преобразован в ноябрь (11) и т. Д. и пр.
Что касается лет, все годы должны оставаться одинаковыми, за исключением сценариев, когда определенные месяцы в году преобразуются в предыдущие месяцы прошлого года (например, с интервалом в один, если январь (1) становится декабрем ( 12), год впоследствии изменится на предыдущий год: с интервалом в два, если февраль (2) станет декабрем (12) или январь (1) станет ноябрем (11), год впоследствии изменится на предыдущий год как хорошо.
Итак, я был бы очень признателен, если бы кто-нибудь мог предложить решение для вышеуказанного сообщения об ошибке или даже предоставить другой цикл for для достижения моей цели, как обсуждалось выше. Заранее спасибо!
Best
Lisa