SAS - Excel Import DateTime не сохраняет достаточно значащих цифр - PullRequest
0 голосов
/ 01 апреля 2019

Как видно из заголовка, у меня проблемы с импортом даты и времени из Excel в SAS.Кажется, проблема в секундах:

Вот пример данных из Excel:

Мой DateTime:

enter image description here

Вот исходные числа Excel:

enter image description here

Edit2:

43417.58657407
43417.58656250

Когда я импортирую их в SAS, вот какSAS отображает их:

13NOV2018:14:04:39
13NOV2018:14:04:39

и числовые значения:

1857737079
1857737079

Я пытаюсь выяснить, как заставить SAS правильно считывать секунды.Я использую процедуру импорта, и вот мой код:

proc import
out = MyDSOutput
datafile= MyDSInput
dbms     = EXCEL replace;
sheet    = "page";
getnames = yes;
mixed    = yes;
scantext = yes;
usedate  = no;
scantime = yes;
textsize = 32767;
;
run;

РЕДАКТИРОВАТЬ: я должен был добавить, что преобразование этого в CSV действительно не вариант, потому что у меня есть числовые идентификаторы, которые> 15 цифр и превосходятпреобразует все, что> 15 цифр в 0.

EDIT2: добавлена ​​расширенная версия необработанных чисел Excel

1 Ответ

1 голос
/ 01 апреля 2019

Excel сохраняет время как часть дня.Невозможно точно указать определенное количество секунд, когда вы это делаете.Это конкретное время, 14:04:40 (второе число 50 680), особенно трудно представить в виде дроби с плавающей запятой.Если вы представляете его как 0,58657407 и умножаете его на количество секунд в дне, вы получаете секунды 50 679,999648, что немного меньше, чем вы хотите.

Попробуйте разделить поле DATETIME на отдельные поля DATE и TIME.Таким образом, SAS будет иметь больше двоичных цифр для представления только времени суток (поскольку ему также не нужно иметь 40K или 20K секунд для дня года).Возможно, это будет близко?Или сохраните значение в виде символьной строки в Excel, а затем используйте функцию INPUT () в SAS, чтобы преобразовать строку в значение даты и времени.

Для вашей проблемы с ID не храните значения ID в виде чисел в любой системеесли вы можете избежать этого.Если вы можете сохранить идентификатор в вашем файле EXCEL, тогда EXCEL может записать его в файл CSV.Но когда вы читаете файл CSV, убедитесь, что вы читаете этот столбец в символьную переменную, а не в числовую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...