r - 计算每天收集的卫星数据的每周平均值
问题描述
我正在处理每天收集的下载的海面温度数据。
我想格式化数据,以便它给出一年中每周的平均温度,以便我可以绘制温度随时间的变化。该数据集是一个 3-D 数组,其中 34 行对应于经度,40 列对应于 30 个时间步长中的每一个(例如,收集数据的 2017 年 6 月的 30 天)。这是部分数据的快照1。我想我需要矩阵中数组 , , 5 - , ,11 的平均值来组成第 23 周,然后数组 , , 12 - , , 18 组成第 24 周等等,但我可能是错的......
这是我在 R 中加载数据集的代码:
junk <- GET('https://coastwatch.pfeg.noaa.gov/erddap/griddap/jplG1SST.nc?SST%5B(2017-06-01T00:00:00Z):1:(2017-06-30T00:00:00Z)%5D%5B(16.5):1:(16.9)%5D%5B(-23.10):1:(-22.77)%5D,mask%5B(2017-06-01T00:00:00Z):1:(2017-06-30T00:00:00Z)%5D%5B(16.5):1:(16.9)%5D%5B(-23.10):1:(-22.77)%5D,analysis_error%5B(2017-06-01T00:00:00Z):1:(2017-06-30T00:00:00Z)%5D%5B(16.5):1:(16.9)%5D%5B(-23.10):1:(-22.77)%5D', write_disk("sst.nc", overwrite=TRUE))
nc=nc_open('sst.nc')
names(nc$var)
v1=nc$var[[2]]
sst=ncvar_get(nc,v1)
dim(sst)
dates=as.POSIXlt(v1$dim[[2]]$vals,origin='1970-01-01',tz='GMT')
dates
lon=v1$dim[[2]]$vals
lat=v1$dim[[2]]$vals
然后我使用以下代码绘制数据:
I=which(lon>=-23.1 & lon<=-22.8)
J=which(lat>=16.5 & lat<=16.9)
sst2=sst[I,J,]
n=dim(sst2)
res=rep(NA,n)
for (i in 1:n)
res[i]=mean(sst2[,,i],na.rm=TRUE)
plot(1:n,res,axes=FALSE,type='o',pch=20,xlab='Week of the year',ylab='SST (ºC)', main = 'Average SST June 2017')
axis(2)
axis(1,1:n,format(dates, '%d'))
box()
当前绘制此图3。我想沿 x 轴表示一年中的一周,这些点对应于 6 月每周的平均 SST。
有什么想法吗?
谢谢您的帮助!
解决方案
推荐阅读
- sql - 如何在oracle plsql中将列数据转置为行
- r - R中的sumifs和countifs等效
- javascript - 导航栏的vue js嵌套路由设置
- java - Apache Spark 使用存储在 Parquet 文件中的数据:是否可以进行第二次排序(好像存在二级索引)?
- arrays - 如何将 MongoDB 文档字段移动到对象数组?
- python - 如何创建一个像 argparse.ArgumentParser 一样工作的“容器”?
- visual-studio-code - 自定义 Visual Studio 代码登陆页面
- r - 时间序列中的 geom_smooth 问题
- javascript - EddyVerbruggen / cordova-plugin-googleplus Cordova 错误类型错误:无法读取未定义的属性“googleplus”
- javascript - 如何将偶数 li 文本颜色更改为绿色,将奇数更改为红色?