2016-08-27 3 views
1

Я искал бросить курить, чтобы решить мою проблему, но я все еще не мог ее решить. Я хочу, чтобы импортировать файл nedCDF в R. Как это:Импорт 4-мерных данных netCDF в R

ncdata <- nc_open("prec_daily_2005-2005.nc") 
print(ncdata) 

и я получаю следующее

File prec_daily_2005-2005.nc (NC_FORMAT_CLASSIC): 

1 variables (excluding dimension variables): 
    float prec[longitude,latitude,z,time] 
     source: Reanalysis daily precipitation, statistically corrected for number of raindays, monthly amounts and diurnal cycle at 1.0deg; interpolated to 0.1deg; available GHCN/GSOD daily station data assimilated into gridded data 
     name: prec 
     title: Daily bias corrected precipitation 
     date: 01/01/05 
     time: 00:00 
     long_name: Precipitation 
     units: kg m-2 s-1 
     missing_value: 2.00000004008175e+20 
     _FillValue: 2.00000004008175e+20 
     valid_min: 0 
     valid_max: 0.0045476695522666 

4 dimensions: 
    longitude Size:800 
     units: degrees_east 
     point_spacing: even 
    latitude Size:300 
     units: degrees_north 
     point_spacing: even 
    z Size:1 
     units: level 
     positive: up 
    time Size:365 *** is unlimited *** 
     units: days since 2005-01-01 00:00:00 
     time_origin: 01-JAN-2005:00:00:00 

6 global attributes: 
    history: Thu May 22 10:21:12 EDT 2014: created by JS using convert2alma.sh 
    title: Princeton University Hydroclimatology Group Bias Corrected African (1979-2005) Meteorological Forcing Dataset V1.0 
    institution: Princeton University 
    contact: Justin Sheffield ([email protected]) 
    source: Forcings are a hybrid of NCEP/NCAR reanalysis and observations 
    comment: This dataset is described in Chaney and Sheffield (2012) (Chaney, N., and J. Sheffield, 2012: High Resolution Gridded Daily Meteorological Data for Africa: Dataset Development and Analysis of Trends in Means and Extremes, J. Climate, to be submitted) and is related to the original global version reported in Sheffield et al., J. Climate (2006). Updates/changes include: i) African continent domain; ii) extension to 2005; iii) assimilation of available GHCN/GSOD daily station observations; iv) step change detection and correction for observational datasets; v) improved sampling procedure for correction of rain day statistics; vi) use of latest versions of CRU, SRB and TRMM products; vii) improved consistency between specific and relative humidity and air temperature. See Sheffield et al., J. Climate (2006) for details of the observations used and the bias correction and downscaling methodology. 

, а затем я хочу, чтобы извлечь данные по осадкам, например, в одной ячейке сетки в один день :

n_prec <- ncvar_get(ncdata, 'prec') 
print(n_prec[1, 1, 1, 1]) 

, но я получаю сообщение об ошибке ан как: ошибки в n_prec [1, 1, 1, 1]: неправильное число измерений

и я не понимаю, потому что набор данных имеет размеры. Но я, возможно, неправильно понял что-то, поскольку я довольно новичок в R.

Я рад за любую помощь. Manuel

+0

Вы не упомянули (в частности), какую версию R вы используете, какую netcdf (и версию) вы установили, какие инструкции вы следуете. Кроме того, я пытался установить RnetCDF и имел ошибки - вы проверяли, что-нибудь появилось? Откуда у вас был файл данных. Вы проверили [инструкции по установке NASA] (http://disc.sci.gsfc.nasa.gov/recipes/?q=recipes/How-to-Read-Data-in-netCDF-Format-with-R)? Они кажутся вполне ясными и также ссылаются на инструкции OSU. – jcoppens

+0

, пожалуйста, предоставьте воспроизводимый пример –

+0

Я использую R версию 3.3.0 (2016-05-03). Данные взяты из Принстонского университета: http://hydrology.princeton.edu/getdata.php?dataid=6. Здесь ссылка dropbox на файл данных: https://www.dropbox.com/sh/cf9y591hmlga69r/AAA8qnL0dM6EAwePehiXyA8Va?dl=0 @jcoppens: Спасибо за ссылку, не видели эту страницу, я попробую еще раз с этим инструкции. Но все же я не понимаю, почему это не работает так, как я это пробовал. –

ответ

1

Число измерений для n_prec равно 3, а не 4. Измерение «z» имеет только 1 параметр/уровень, поэтому R игнорирует его при чтении в массиве.

> library(ncdf4) 
> ncdata <- nc_open("prec_daily_2005-2005.nc") 
> n_prec <- ncvar_get(ncdata, 'prec') 
> dim(n_prec) 
[1] 800 300 365 
> n_prec[1,1,1] 
[1] NA 
> n_prec[400,100,6] 
[1] 1.13913e-05