首页 > 解决方案 > 在数据框的值之间添加精确的空间

问题描述

我有一个超过 483 天的数据框,每天我有 84 个值。由于这些数据必须在地下水流模拟软件中读取,因此它还具有相应的应力期和每天的数值量 (84)。

所以这里有一个非常接近真实数据的例子:

Layer     Row    Column     Value1    Flag    Value2
-1 -- 3.INCRCH. Stress Period 1
3
1         95       1          11.602   -1       11.602
1         95       2          11.7     -1       11.7 
1         95       3          11.82    -1       11.82
-1 -- 3.INCRCH. Stress Period 2
3
1         95       1          11.405   -1       11.405
1         95       2          11.32    -1       11.32 
1         95       3          12.1     -1       12.1

其中字符串前面的 -1 是一个标志,表示应该读入这个值,3 是每天的值的数量,在实际数据中为 84。

现在,当我使用 write.table(x) 提取此数据帧时,文本文件中的输出如下所示:

-1 -- 3.INCRCH. Stress Period 1
3
1 95 1 11.602   -1       11.602
1 95 2 11.7   -1       11.7 
1 95 3 11.82   -1       11.82
-1 -- 3.INCRCH. Stress Period 2
3
1 95 1 11.405   -1       11.405
1 95 2 11.32   -1       11.32 
1 95 3 12.1   -1       12.1

但问题是,该软件对空间敏感,因此每行的数字之间必须有恰到好处的空间,以便软件可以读取数据。

所以所需的文件如下所示:

     -1 -- 3. INCRCH. Stress Period 1
      3
      1        95         1    11.602        -1 11.602
      1        95         2      11.7        -1 11.7
      1        95         3     11.82        -1 11.82
     -1 -- 3. INCRCH. Stress Period 2
      3
      1        95         1    11.405        -1 11.405
      1        95         2     11.32        -1 11.32
      1        95         3      12.1        -1 12.1

因此,必须以这种方式精确控制数字之间的空间,以便在软件中读取。我尝试使用 sprintf('%10d%10d%10d%10.1f%10d%5.1f') 进行一些编码,但它仅适用于我尝试过的某些数字,但不适用于我的数据框,即使我只尝试更改一行。我必须使用 write.table 函数提取数据,因为数据文件必须是一种文本编辑器。

我会很感激任何帮助!

标签: rdataframewhitespace

解决方案


推荐阅读