如何计算在R中聚合时使用的像素数?

时间:2013-04-04 14:52:58

标签: r aggregate

我有两个二进制文件(1440 * 720)尺寸相同:我想根据第二个文件值(间隔)取第一个文件的平均值,该文件的值范围为1到7。每当第二个文件中的值介于0-1之间时,计算第一个文件中的相应平均值并返回结果,用2-3,3-4,5-6,7-8.no数据值做同样的事情被指定为NA。

1-阅读第一个文件:

conne <- file("C:\\corr.bin","rb")
corr <- readBin(conne, numeric(), size=4, n=1440*720, signed=TRUE)
#please assume a matrix of 720*1440 dimnsions

2-阅读第二个文件:

conne1 <- file("C:\\use.bin","rb")
cus <- readBin(conne1, numeric(), size=4, n=1440*720, signed=TRUE)
#please assume a matrix of 720*1440 dimnsions

计算:

cusBREAK <- cut(cus,1:8))
aggregate(corr, list(cusBREAK), mean, na.rm=TRUE)

这很好但我还需要知道所用像素的数量以及总像素数的百分比。

  Results 
  Group.1   x    number of pixels    percentage (out of the total number of pixcels)
 1   (0,1] 0.5      ?                       ?
 2   (1,2] 0.23     ?                       ?
 3   (2,3] 0.65     ?                       ?
 4   (3,4] 0.3      ?                       ?
 5   (4,5] 0.36

1 个答案:

答案 0 :(得分:3)

使您在aggregate中使用的功能返回多个值。例如:

aggregate(corr, list(cusBREAK), function(values){ 
   c( "x"       = mean(values), 
      "pixels"  = length(values), 
      "percent" = length(values) / length(corr) * 100 
   ) 
}, na.rm=TRUE)