【发布时间】:2022-01-17 23:57:11
【问题描述】:
我目前正在处理大量数据。数据按年份划分(从 1999 年到 2018 年),我必须每年执行几次计算(平均值,sd ...),我想创建一个函数或循环来迭代它,改变名字 这是一个示例:
zoocstack98 <- stack(zoocfiles98, varname = "zooc") #stack of layers from each
zoocstack99 <- stack(zoocfiles99, varname = "zooc")
zoocstack00 <- stack(zoocfiles00, varname = "zooc")
#Reduce extent to the Azores region
zoocstack_new98<-crop(zoocstack98, extent(-36,-20,33,44))#longitude y luego latitude
zoocstack_new99<-crop(zoocstack99, extent(-36,-20,33,44))
zoocstack_new00<-crop(zoocstack00, extent(-36,-20,33,44))
#### 1998
index98 <- seq(as.Date('1998-01-01'), as.Date('1998-12-31'), by='day')
corresponding to dates of environmental layers
month98<-month(index98)
zoocstack_new98new <- raster::setZ(zoocstack_new98,month98) #assign each raster layer in stack
a timestamp by date
mean_zooc_month98 <- zApply(zoocstack_new98new, by=month98, mean, na.rm=T) #average over each
layer in stack by day of year
sd_zooc_month98 <- zApply(zoocstack_new98new, by=month98, sd, na.rm=T) #average over each
layer in stack by day of year
####1999
index99 <- seq(as.Date('1999-01-01'), as.Date('1999-12-31'), by='day')
month<-month(index99)
zoocstack_new99new <- raster::setZ(zoocstack_new99,month)
mean_zooc_month99 <- zApply(zoocstack_new99new, by=month, mean, na.rm=T)
sd_zooc_month99 <- zApply(zoocstack_new99new, by=month, sd, na.rm=T)
####2000
index00 <- seq(as.Date('2000-01-01'), as.Date('2000-12-31'), by='day')
month<-month(index00)
zoocstack_new00new <- raster::setZ(zoocstack_new00,month)
mean_zooc_month00 <- zApply(zoocstack_new00new, by=month, mean, na.rm=T)
sd_zooc_month00 <- zApply(zoocstack_new00new, by=month, sd, na.rm=T)
我想找到一种自动执行此操作的方法,而不是复制和替换名称,这导致我犯了很多错误。
提前致谢
【问题讨论】:
-
考虑使用
list的 data.frames 而不是多个单个数据帧。在list中命名一个对象非常简单。 -
你能再详细一点吗?我是初学者用户
-
也许我误解了你的问题:数据是如何提供的?您是否已经有多个 data.frames 或者您是否有许多名为(例如)
zoocstack_new98或zoocstack_new99的文件? -
是的,抱歉,我看到我的标题有点混乱。经过一些操作后,我还获得了执行重复操作的数据帧,所以总的来说,我只是在寻找一种自动完成操作的方法
标签: r function loops optimization