Удалить значение заполнения или недостающее значение из Netcdf - PullRequest
0 голосов
/ 12 января 2020

Набор данных имеет значение заполнения 1e30. При получении среднего значения файлов NetCDF я должен использовать код na.rm=TRUE или na.rm=FALSE?

u2 <- list.files("/filepath/", pattern = "*.nc", full.names = TRUE) 
r  <- mean(u2, na.rm=TRUE)   

Я получаю values : -7.53555e+18, 1.263985e+18 (min, max) с использованием na.rm=TRUE и -7.781048e+16, 3.923543e+15 (min, max) при кодировании с r <- mean(u2).

na.rm=TRUE не дает правильного результата, я чувствую, что данные преувеличены. Прежде чем приступить к анализу данных, что следует сделать?

Данные: Data_Test

1 Ответ

0 голосов
/ 12 января 2020
na.rm=TRUE

должно привести к тому, что R проигнорирует все пропущенные значения. Вы проверили, чтобы убедиться, что все файлы используют одно и то же пропущенное значение? Вы уверены, что не подхватываете дополнительные файлы с другими определениями пропущенных значений с помощью символа подстановки? Если бы я хотел, я бы выполнил следующие проверки:

Сначала убедитесь, что перечисленные здесь файлы соответствуют средним в R:

ls *.nc 

Затем проверьте определения из пропущенных значений:

for file in `ls *.nc` ; do ncdump $file | grep -i missing ; done

и вы также можете проверить полученное значение путем перекрестной проверки с помощью cdo:

cdo ensmean *.nc ensmean.nc
cdo fldmax ensmean.nc fldmax.nc
cdo fldmin ensmean.nc fldmin.nc  
ncdump fldmin.nc
ncdump fldmax.nc 

и посмотреть, какое значение это вам дает, и если оно отличается от того, что в программе R ...

Надеюсь, что помогает снимать проблемы ...

...