我首先要说的是,我不是程序员,我只是想存储数据,以便自己可以轻松阅读。
我刚刚下载了一个大的.nc天气数据文件,我正在尝试从文件中获取数据并以.csv格式存储,以便我可以在excel中轻松查看。数据的问题在于它包含53个具有三个维度的变量:纬度,经度和时间。我已经写了一些代码,只采取一定的纬度和经度以及每个时间戳,所以我为每个变量得到一个很好的列(具有单个纬度和经度,但每个时间戳)。我的问题是我希望循环存储每个变量的列到R中的另一个(任意)对象,这样我只需运行一次然后用write.csv将所有数据写入一个.csv文件功能
这是我到目前为止编写的代码,其中janweather是.nc文件。
while( j <= 53){
v1 <- janweather$var[[j]]
varsize <- v1$varsize
ndims <- v1$ndims
nt <- varsize[ndims] # Remember timelike dim is always the LAST dimension!
j <- j +1;
for( i in 1:nt ) {
# Initialize start and count to read one timestep of the variable.
start <- rep(1,ndims) # begin with start=(1,1,1,...,1)
start[1] <- i
start[2] <- i# change to start=(i,i,1
count <- varsize # begin w/count=(nx,ny,nz,...), reads entire var
count[1] <- 1
count[2] <- 1
data3 <- get.var.ncdf( janweather, v1, start=start, count=count )
}
}
以下是来自print.ncdf(janweather)的nc文件的详细信息:
[1] "file netcdf-atls04-20150304074032-33683-0853.nc has 3 dimensions:" [1] "longitude Size: 240" [1] "latitude Size: 121" [1] "time Size: 31" [1] "------------------------" [1] "file netcdf-atls04-20150304074032-33683-0853.nc has 53 variables:"
我的主要目标是通过get.var.ncdf
函数将所有变量存储在不同的名称下。现在我意识到它只是一直在覆盖数据3&#39;直到它到达最后一个变量,所以我所做的就是将data3写入最后一个变量。我想有一个简单的解决方案,但我不确定如何生成字符串来存储变量。
同样,我不是程序员,所以我很抱歉,如果我说的话没有任何意义,我对语言或语言不太熟悉任何东西。
感谢你们带来的任何和所有帮助!
答案 0 :(得分:0)
如果您不是程序员而只想获得csv格式的变量,则可以使用NCO commands。使用此命令,您可以对netcdf文件执行多项操作。
因此,使用命令ncks,您可以从具有特定维度切片的变量输出数据。
ncks -H -v latitude janweather.nc
此命令将在屏幕上列出纬度变量中的值。
ncks -s '%f ,' -H -v temperature janweather.nc
此命令将列出变量temperature的值,其格式为-p参数(sprintf样式)指定的格式。
所以只需将输出传递给文件,就可以在文本文件中找到变量的内容。
ncks -s '%f ,' -H -v temperature janweather.nc > temperature.csv