“如何从R中的for循环中的现有变量创建新变量?”

时间:2019-06-06 23:16:13

标签: r loops rstudio

我最近在运行如下所示的for循环时遇到错误消息:

错误:找不到对象“ Month1”

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变量似乎很奇怪,即使我在导入的变量中有'Month'和'Year'的变量数据集。

上述for循环的目的:

目标是从每个月中减去一个间隔(i = 1、2、3,... 12),同时修改年份,以便通过随后的克里金插补有效地准备年度平均值计算。

例如,以一个间隔,12月(12)将转换为11月(11),2月(2)将转换为1月(1),1月(1)将转换为12月(12) , 等等。同样,以两个间隔,12月(12)将转换为10月(10),2月(2)将转换为12月(12),1月(1)将转换为11月(11),依此类推等等。

关于年份,所有年份应保持不变,除非将一年中的某些月份转换为过去一年中的前几个月(例如,如果1月(1)变为12月,则间隔为一年) 12),则年份将随后更改为上一年;如果间隔2月(2)变为12月(12)或1月(1)变为11月(11),则间隔将以两年为间隔,随后一年好吧

因此,如果有人可以为上述错误消息提供解决方案,或者甚至提供另一个for循环来实现我的目标,我将不胜感激。预先谢谢你!

最好

丽莎

0 个答案:

没有答案