SAS pro c при экспорте в Excel преобразует числа в научную нотацию c - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть набор данных SAS с полем Number. Когда я делаю proc export dbms=xlsx, он конвертирует число в нотацию scientifi c. Теперь я знаю, что могу изменить номер на текст в SAS, и это сохранит формат по желанию. Но изменение его на текст создает проблемы с объединениями, потому что ему нужно объединиться с другой таблицей, где столбец имеет значение c. Короче говоря, я не слишком заинтересован в изменении формата с помощью put(Colname,z5.) Но я хочу показать в Excel в виде текста ... если я не могу получить начальные нули, по крайней мере, я не хочу обозначения scientifi c. Возможно ли это?

Ответы [ 2 ]

1 голос
/ 19 апреля 2020
  • Proc EXPORT DBMS=XLSX output

    • НЕ создает отформатированные значения в целевом объекте. Появятся необработанные значения.
      • Форматом чисел c является Excel General, поэтому значения> = 1E + 11 будут отображаться в научном формате c.
    • Имеет ли MAINTAIN SAS форматированные значения переменных в виде значений даты Excel, отформатированных аналогично исходному формату даты SAS.
  • ODS EXCEL output

    • Создает ли отформатированные значения в целевом объекте.
    • Позволяет настраивать визуализацию Excel с параметром стиля tagattr=

Пример:

proc format;
  value $lettered
    'A'-'B' = 'Aaaaaaaaaa'
    'B'-'C' = 'Bbbbbbbbbb'
    'C'-'D' = 'Cccccccccc'
    'D'-'E' = 'Dddddddddd'
    'E'-'F' = 'Eeeeeeeeee'
  ;
;

data class(keep=id date: name: x age);
  format id z9.   
    date1 date9.
    date2 mmddyy10.
    date3 yymmdd10.
    date4 ddmmyy10.
    name  $10.
    name2 $lettered.
    x 9.4
  ;

  set sashelp.class;

  id + 1;
  date1 = today() - id;
  date2 = date1;
  date3 = date2;
  date4 = date3;

  name2=name;

  x = rand('uniform', 100);
run;

proc export data=class dbms=xlsx replace file='c:\temp\export.xlsx';
run;


ods excel file='c:\temp\print.xlsx';
proc print noobs data=class;
run;
ods excel close;


options noxwait xsync xmin;

%sysexec start "Preview" /D C:\Temp export.xlsx;
%sysexec start "Preview" /D C:\Temp print.xlsx;

Excel из PROC Export - Некоторое форматирование значения даты аналогично исходному форматированию даты SAS, в противном случае значения необработанных данных

enter image description here

Excel от ODS Excel & PROC Print - SAS дата / пользовательский / числовой c форматы на выходе

enter image description here

1 голос
/ 19 апреля 2020

Вместо этого используйте PRO C REPORT и ODS.

ods excel file="path/to/output.xlsx" ;
proc report data=mydata ;
  columns _ALL_ ;
run ;
ods excel close ;

Если вы хотите принудительно преобразовать конкретную переменную в текст Excel, добавьте ниже к PRO C REPORT:

  define numvar / style={tagattr='format:text'} ;

https://support.sas.com//rnd/base/ods/templateFAQ/office91.pdf

...