"Как создать новую переменную из существующей переменной в цикле for в R?" - PullRequest
1 голос
/ 07 июня 2019

Я недавно столкнулся с сообщением об ошибке при запуске цикла 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...