我对R来说并不陌生,但我找不到任何解决方案。我的目标是创建一个基于“未知”数据类型的文件,称为“通用变量格式”“* .uvf”,并从另一个文件的数据中填充它的参数。该格式适用于不同类型的(水文)时间序列。
问题是,它的标题是一个4行标题类型,具有强大的结构定义。我想将每个单元格定义为一列。
示例:头文件中的第三行应构造如下:
重要的是,向量“X”在第3行的第16-25行中没有多于10的数字。否则程序无法读取X坐标。
我想从另一个文件中读取X坐标,将其保存为名为X的向量并将其保存在上面解释的位置。在此之后,“真实数据”(例如降水)应该逐行列在每天的标题下。
示例:
*Z
Abfluss m3/s K
A 2509510 5636680 120
86110100158611010130
8611010015 0.184
8611010030 0.189
8611010045 0.191
8611010100 0.1940000
8611010115 0.2010000
8611010130 0.2010000
有几个德国条目;但那应该不是问题。
答案 0 :(得分:0)
步骤1:使用readLines函数读取前四行,并从这四行中解析出您的详细信息:
1. Zeile : *Z
2. Zeile : Spalte 1-15 Parameter, Spalte 16-30 Einheit, Spalte 32 DefArt (I,K,M)
3. Zeile : Spalte 1-15 Ort, Spalte 16-25 X, Spalte 26-35 Y, Spalte 36-45 Höhe
4. Zeile : Spalte 1-10 Start-Zeitpunkt, Spalte 11-20 End-Zeitpunkt
可以使用read.fwf(textConnection(.))
在一行或使用substr
解析第二行。
fmtlines <- readLines(textConnection("*Z
Abfluss m3/s K
A 2509510 5636680 120
86110100158611010130
8611010015 0.184
8611010030 0.189
8611010045 0.191
8611010100 0.1940000
8611010115 0.2010000
8611010130 0.2010000
Einheit<- substr( fmtlines[2], 16, 30 )
Einheit
[1] "m3/s "
同样地从第三和第四行中提取其余参数。
步骤2:然后使用带有skip = 4参数的read.fwf()
和第一步中的派生格式参数来完成该过程。