Terra包同经度栅格方差计算及多图层处理方法咨询
解决方案:Terra原生函数计算同一经度的栅格统计量
单图层栅格处理
Terra包提供了colStats()原生函数,专门用于对栅格的**列(对应同一经度)**执行统计计算,比转成data.frame分组的方法更高效,尤其适合大栅格数据。
代码示例
library(terra) # 创建示例栅格 r <- rast(nrows = 5, ncols = 10, vals = 1:50) # 计算同一经度(每列)的标准差 lon_sd <- colStats(r, stat = sd) # 若需方差,直接替换stat为var lon_var <- colStats(r, stat = var) # 绑定经度值与统计结果(可选) lons <- xFromCol(r) result <- data.frame(longitude = lons, sd = lon_sd, variance = lon_var)
多图层栅格处理
colStats()同样支持多图层栅格,会自动对每个图层分别计算每列的统计量,返回结果为矩阵(行对应图层,列对应经度列)。
代码示例
# 创建3图层示例栅格 r_multi <- c(r, r * 2, r + 10) # 计算每个图层的经度方向标准差 multi_lon_sd <- colStats(r_multi, stat = sd) # 转成数据框更易查看 multi_result <- as.data.frame(multi_lon_sd) multi_result$longitude <- xFromCol(r_multi)
补充说明
colStats()的stat参数支持所有R基础统计函数(如mean、median、var等),也可以传入自定义函数。- 若需要按纬度(行)计算统计量,可使用对应的
rowStats()函数。
内容的提问来源于stack exchange,提问作者Breeze
相关产品推荐
相关产品推荐

