在SAS中根据字符间隔有条件地更改第一行名称

Changing the first row name conditionally on character interval in SAS

考虑以下数据:

data GDP;
   input Year $ Agriculture Industry;
datalines;
2016 195 1634
2017 220 1986
;

导出为 .dat 文件时:

proc export
   data    = GDP
   outfile = '....\GDP.dat'
   dbms    = TAB
   replace;
run;

然后我得到以下文件:

但是,我想要以下文件:

其中:

因此 SAS 应该计算值的间隔并将其添加到第一行名称。如何在 SAS 中实现?

您可以使用变量标签来伪造它,然后将 LABEL 选项添加到 PROC EXPORT。

data GDP;
   input Year $ Agriculture Industry;
label Year = "Mydata, Year:1-4" Agriculture = "Agriculture:9-11";
   datalines;
2016 195 1634
2017 220 1986;
run;

proc export
   data    = GDP
   outfile = '....\GDP.dat'
   dbms    = TAB
   LABEL
   replace;
run;

仅供参考 - 看起来您正在尝试创建一个固定宽度的文件并将规范放入 header。我建议不要这样做,要么将规范放在一个单独的文件中,要么将其包含在文件的顶部。 将它放在 header 中会使任何其他系统更难正确处理。

如果您出于某种原因确实需要它,您可能还需要考虑使用数据步骤来创建导出,而不是使用 PROC EXPORT。

据我所知,虽然您可以将 PROC CONTENTS 输出推送到单独的数据集,但没有简单的方法来自动定义规范。