【问题标题】:Modifying Labels and Contents修改标签和内容
【发布时间】:2018-07-05 04:43:54
【问题描述】:

我正在尝试修改现有的 .csv 文件并将新版本保存到另一个位置。任务是:

1) 给变量名加上不同的标签
2) 有条件地修改其中一个变量的内容

%let infile=/.../file.csv;
%let outfile=/.../new_file.csv;

data _null_ ;
  infile "&infile" dsd dlm=',' lrecl=2000 truncover ; 
  file "&outfile" dsd dlm='|' lrecl=200 ;
  length var1-var5 $161 ;
  input var1-var5 ;
  put (var1-var3 var5) (+0) ;
  label var1='#var1' var2='Variable 2';
  if var5 = 'donkey' then var3 = 'donkey '||var3 ;
run;

我是否需要实际导入初始文件,对其进行更改,然后再将其写回?

【问题讨论】:

  • 取决于您如何定义“导入”,您在上面所做的工作是否可行,但您需要为第一行添加条件并确保在 put 语句之前重新编码变量。在这种情况下,您在更改 Var3 之前将它们写回。我还认为在这种情况下需要在 PUT 语句中定义分隔符,但您可以轻松地对其进行测试。

标签: csv import sas export


【解决方案1】:

CSV 文件没有名称或标签,只有列标题。如果要更改列标题,则仅更改第一行的值。

%let infile=/.../file.csv;
%let outfile=/.../new_file.csv;

data _null_ ;
  infile "&infile" dsd dlm=',' lrecl=2000 truncover ; 
  file "&outfile" dsd dlm='|' lrecl=200 ;
  length var1-var5 $161 ;
  input var1-var5 ;
  if _n_=1 then do;
    var1='#var1'; var2='Variable 2';
  end;
  else do;
    if var5 = 'donkey' then var3 = 'donkey '||var3 ;
  end;
  put (var1-var3 var5) (+0) ;
run;

【讨论】:

    猜你喜欢
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多