-2

我有两个具有 (1440*720) 相同尺寸的二进制文件:我想根据第二个文件值(间隔)取第一个文件的平均值,这个文件的值范围从 1 到 7。只要值在0-1之间的第二个文件范围内,计算第一个文件中对应的平均值并返回结果,对2-3,3-4,5-6,7-8做同样的事情。没有数据值被分配为不适用。

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
4

1 回答 1

3

使您在聚合中使用的函数返回多个值。例如:

aggregate(corr, list(cusBREAK), function(values){ 
   c( "x"       = mean(values), 
      "pixels"  = length(values), 
      "percent" = length(values) / length(corr) * 100 
   ) 
}, na.rm=TRUE) 
于 2013-04-04T15:34:55.283 回答