각 연도의 5 일 간격을 나타내는 73 개의 netCDF 파일이 있으며 여러 변수가 있습니다. 각 파일에는 시간 간격을 나타내는 120 개의 레이어가 있습니다. 내가 R에 그들 모두를 읽고 그들을 적절하게 그렇게 같이 ncdf4
패키지를 사용하여 명명 한타임 스탬프를 기반으로 특정 netCDF 파일에 함수를 연결하는 방법
:
filenames <- list.files(path=getwd())
for(i in filenames) {
ncin <- nc_open(i)
ds<-paste(i)
assign(ds, ncin)
print(i)
}
나는 또한 netCDF의 파일 (위도 - 경도)와 같은 투영 위치의 데이터 프레임을 가지고 그러나 이러한 위치는 불규칙적으로 전체 연도에도 적용됩니다. 데이터의 샘플은 다음과 같습니다
>head(df)
> Lon Lat datetime
2 -3.179046 58.65417 2016-09-30 17:25:38
3 -3.180403 58.65483 2016-09-30 17:29:43
4 -3.187734 58.66102 2016-09-30 21:22:51
5 -3.190197 58.66409 2016-09-30 22:02:47
6 -3.182058 58.67433 2016-10-01 06:16:08
7 -3.181318 58.67475 2016-10-01 06:20:31
내가 뭘하려고 오전 거기에 따라 올바른 netCDF의 파일과 레이어에 데이터 프레임과 일치하는 것입니다은 1 일 5의 사이에 있다면 즉, 날짜 스탬프입니다 그 해 netCDF 파일 1 등이 될 것입니다. 그런 다음 데이터 프레임의 연관된 datetime 스탬프가있는 위치 데이터에 netCDF 파일의 변수 데이터를 보간합니다. 따라서 주어진 시간과 장소에서 데이터 프레임에 의해 제공된, 같은 날짜와 시간에 변수 V의 값은 netCDF 파일에 무엇입니까? 나는 루프 기능을 사용하여 첫 번째 부분을 할 수 있지만 코드에 소요되는 조잡한 비효율적이고 시간 :
function(dataframe){
d <- dataframe[i,]
if(between(d$datetime, 2017-01-01 00:00:00, 2017-01-05 23:59:59){ncfile <- file1} else if (between(d$datetime, 2017-01-06 00:00:00, 2017-01-010 23:59:59))
{ncfile <- file2}}
내가 가장 좋은 방법에 관해서는 확실 해요 전에 등등 ... netCDF의 파일과 함께 일한 적이 데있다. 어떤 제안?
################# UPDATE나는 순차적으로 명명 된 파일에서
filenames <- list.files(path=getwd())
x <- lapply(filenames, nc_open)
추출물 날짜를 사용에 netCDF의 파일을 읽을 :
PFOW_Climatology2_0001_1993-01-01.nc
PFOW_Climatology2_0002_1993-01-06.nc
최대
0,123,516을 사용하여PFOW_Climatology2_0073_1993-12-27.nc
행
fd <- as.Date(substr(filenames, 24, 36))
나는 각각의 데이터 포인트과 같이 FD에 해당하는 내 간격 find9ing하여 dataframe에 대한 참조 열을 생성
:
i <- findInterval(dd, fd)
df$file <- i
@RobertH. 나는 질문을 수정하여 더 많은 정보를 포함시키고 가장 최근에 제안한 내용을 포함하도록 업데이트하여 매우 도움이되었습니다. {which} 함수가 작동하지 않아 findInterval을 대신 사용했습니다. –
그러나 나는 당신의 기능이 어떻게 작동해야하는지 확신하지 못합니다. ncdf4 객체를 벽돌로 만들려고하면 ''ncdf4 ''에 대한 함수 'raster'에 상속 된 메소드를 찾을 수 없습니다 ' –
'brick'을 ncdf4 객체가 아닌 파일 이름에 사용해야합니다. – RobertH