0

私は新しいRユーザーです。私は今、次のような 1979 年の毎日の netcdf データを持っています:
sm19790101.1.nc
sm19790102.1.nc

.
.
sm19791231.1.nc

「sm」と呼ばれる変数を月ごとの解像度に平均化する必要があります。私は今これを行うことができます:

glob2rx("sm197901*.1.nc")  
jan<-list.files(pattern=glob2rx("sm197901*.1.nc"),full.names=TRUE)

1月のすべてのデータをjanに移植しますが、各ファイルを開いて特定の変数を取得する方法がわかりません(Rnetcdfパッケージをインストールしました). これを手動で行う場合は、次のようになります。

s19790101<-open.nc("sm19790101.1.nc")  
sm19790101<-var.get.nc(s19790101,"sm",na.mode=0)  

そして、それらを平均します...

問題は、ファイル名の一部として変数 (01-31 など) を含むファイルを読み取り、月全体をループする方法だと思います。

4

3 に答える 3

2

要約するデータが多い場合は、NetCDF Operator ツールhttp://nco.sourceforge.net/nco.html#ncra-netCDF-Record-Averagerを使用して、毎日のデータを毎月の平均値に要約できます。

ncra DAILY/sm197901[*].1.nc MONTHLY/sm197901.1.nc
于 2014-04-07T17:37:00.680 に答える
0

ファイル名コンポーネント「sm197901」、日、「.1.nc」を貼り付けて、目的のファイル名を作成できるようです。

#make sure it has a leading 0
days = formatC(1:31, width=2, flag="0")
ncfiles = lapply(days, function(d){
    filename = paste("sm197901", d, ".1.nc", sep="")
    #print(filename)
    open.nc(filename)
})
于 2013-04-11T19:37:58.507 に答える