Проблема с уже импортированными данными заключается в том, что все числовые данные, вероятно, были помещены в символьные переменные, поскольку «первая строка» данных, видимая в процессе импорта, содержала некоторые символьные данные и приводила к выводу для автоматического построения столбца.
В любом случае вам нужно будет создать пары переименования old-name = new-name для каждой переменной, которую необходимо переименовать.Новое имя в строке 1 позволяет transpose
этой строке упорядочить эти части имени как данные.SQL с :into
и separated by
может заполнить макропеременную для использования на шаге proc datasets
, который выполняет переименование столбца без перезаписи всего набора данных.Наконец, шаг DATA с modify
может remove
на месте, опять же, без перезаписи всего набора данных.
filename sandbox temp;
data _null_;
file sandbox;
put 'A,B,C';
put 'Name 1, Name 2, Name 3';
put '2,4,66';
put '3,5,6';
run;
proc import datafile=sandbox dbms=csv replace out=work.oops;
run;
proc transpose data=oops(obs=1) out=renames;
var _all_;
run;
proc sql noprint;
select cats(_name_,"=",compress(col1,,"KN"))
into :renames separated by ' '
from renames;
%put NOTE: &=renames;
proc datasets nolist lib=work;
modify oops;
rename &renames;
run;
data oops;
modify oops;
remove;
stop;
run;
%let syslast=oops;