Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 光栅非NA单元计数_R_Raster - Fatal编程技术网

R 光栅非NA单元计数

R 光栅非NA单元计数,r,raster,R,Raster,这个问题过去曾被问过一次(根据我所能找到的),但唯一的回答并没有提供解决方案。在RasterStack中,我希望为每个光栅生成摘要统计信息(最小、最大、平均值、标准差),以及这些计算中包含的单元数(即非NA单元数)。如果每个光栅都具有相同的范围和分辨率,您可能会认为每个光栅的数量都是相同的,但这些光栅已被各自的QA层屏蔽,从而导致每个光栅层中非NA单元的数量不同。我一直在使用cellStats,但它没有提供单元格计数作为输出。我也可以使用分区统计数据,但这似乎没有这个功能(从我所读到的)。有人知

这个问题过去曾被问过一次(根据我所能找到的),但唯一的回答并没有提供解决方案。在RasterStack中,我希望为每个光栅生成摘要统计信息(最小、最大、平均值、标准差),以及这些计算中包含的单元数(即非NA单元数)。如果每个光栅都具有相同的范围和分辨率,您可能会认为每个光栅的数量都是相同的,但这些光栅已被各自的QA层屏蔽,从而导致每个光栅层中非NA单元的数量不同。我一直在使用cellStats,但它没有提供单元格计数作为输出。我也可以使用分区统计数据,但这似乎没有这个功能(从我所读到的)。有人知道如何将其添加到我的输出中吗


谢谢

我想您正在寻找
freq
功能。此函数将按值显示像素的频率。这里有一种方法可以使用一些虚拟数据计算非NA像素的数量

library(raster)

#Create 2 matrix
m1<-matrix(sample(1:10, 250, replace = T), 
           nrow = 50, 
           ncol = 50)
m2<-matrix(sample(11:20, 250, replace = T), 
           nrow = 50, 
           ncol = 50)

#Transform it to stack
r1 <- stack(raster(m1), raster(m2))

#Set pixel values == 3 and == 12 as NA
r1[r1 ==3 | r1 == 12]<-NA

#Get your cellStats
cellStats(r1, stat = "mean")

#Transform non-NA values to 1
r1[!is.na(r1)]<-1

#Get frequency of pixels by value
#1's will be the number of non-NA pixels
freq(r1)
库(光栅)
#创建2个矩阵

m1我想您正在寻找
freq
功能。此函数将按值显示像素的频率。这里有一种方法可以使用一些虚拟数据计算非NA像素的数量

library(raster)

#Create 2 matrix
m1<-matrix(sample(1:10, 250, replace = T), 
           nrow = 50, 
           ncol = 50)
m2<-matrix(sample(11:20, 250, replace = T), 
           nrow = 50, 
           ncol = 50)

#Transform it to stack
r1 <- stack(raster(m1), raster(m2))

#Set pixel values == 3 and == 12 as NA
r1[r1 ==3 | r1 == 12]<-NA

#Get your cellStats
cellStats(r1, stat = "mean")

#Transform non-NA values to 1
r1[!is.na(r1)]<-1

#Get frequency of pixels by value
#1's will be the number of non-NA pixels
freq(r1)
库(光栅)
#创建2个矩阵

谢谢你的答复,乔纳森。正如您在示例中所概述的,单元数可以从频率中导出,但在处理连续数据时有点麻烦(基本上,我处理的光栅中的每个单元值都是唯一的);但是,您建议的解决方法可能就足够了。谢谢您可以使用
freq(r1,value=NA)
谢谢您的回复,Jonathan,而不是将NA改为1来计数
NA
s。正如您在示例中所概述的,单元数可以从频率中导出,但在处理连续数据时有点麻烦(基本上,我处理的光栅中的每个单元值都是唯一的);但是,您建议的解决方法可能就足够了。谢谢您可以使用
freq(r1,value=NA)