月次製品(バイナリファイル)の年間合計を計算しようとしています https://echange-fichiers.inra.fr/get?k=Jr3tvgeKnWUiC1B0MMY。したがって、12個のファイルがあり、合計を計算する必要があります。以下のコードは正常に機能しましたが、必要なのは、各ファイルにその年のその月に対応する日数を掛けて、合計を計算することです。私の場合、これらのデータは2000年(うるう年)のものであるため、ファイル番号1に31を掛け、ファイル番号2に29を掛けます。
files<- list.files("C:\\jung file_2000_img", "*.img", full.names = TRUE)
x<- do.call(rbind,(lapply(files, readBin , double() , size = 4 , n=360 * 720 , signed =TRUE)))
results <- colSums(x)
fileName <- sprintf("C:\\annual_ET2000_without999_1.img")
writeBin(as.double(results), fileName, size = 4)
ジェームズの答えから、これは日数を計算します:
numDays <- function(month,year){
as.numeric(strftime(as.Date(paste(year+month%/%12,month%%12+1,"01",sep="-"))-1,"%d"))
}
では、それを上記のコードに適用する方法は?つまり、各ファイルの結果を取得し、次のように日数を掛けたいということです。
file1*numDays(1,2000)+file2*numDays(2,2000)+file3*numDays(3,2000)
.............file12*numDays(12,2000)