Преобразовать числовую переменную в переменную времени в - PullRequest
0 голосов
/ 25 сентября 2019

Я импортировал файл CSV в SAS, и у него есть переменная времени. Но переменная времени имеет числовой формат, например, 515, что соответствует 05:15, 1110 относится к 11:10 и 2030, что означает 20: 30.

Мне нужно преобразовать его в надлежащий формат времени, а затем вынуть из него Час . Я попытался:

new_time = put (time, hhmm.);

Вывод, который я получил, был 0:09, 0: 10.

Пожалуйста, помогите мне.

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Попробуйте:

data have;
input mytimevar;
cards;
515
1110
2030
;
run;

data want;
set have;
time = input(put(mytimevar, 4.) || '00', hhmmss.);
format time tod5.;
run;

Как это работает:

  1. Преобразование timevar в текст с использованием put
  2. Добавление 00 за секунды
  3. Ввод в качестве переменной времени с использованием hhmmss. informat
  4. Отображение с ведущими нулями часов в формате tod5.
0 голосов
/ 25 сентября 2019

Значение времени в SAS является числовым, значение которого равно количеству секунд.Отображение такого значения обычно включает в себя ассоциирование формата времени, такого как TIME<em>w.d</em>, HHMM<em>w.d</em>, MMSS<em>w.d</em>.Есть еще много.

Из Справка SAS ( мой курсив )

Значение времени SAS
- это значение, представляющееколичество секунд с полуночи текущего дня. Значения времени SAS находятся в диапазоне от 0 до 86400.

ПРИМЕЧАНИЕ. Форматы времени будут обрабатывать значения времени ( количество секунд )вне диапазона от 0 до 24 часов.

Для вашего случая значения времени (назовите его csvtime), закодированного как 100*hours + minutes, значение времени SAS может быть вычислено с использованием функции dhms, задающей ноль дляаргументы d и s и аргументы h и m, проанализированные с использованием времени csv с использованием целочисленного деления и арифметики модуля.

sastime = dhms (0, floor(cvstime/100), mod(cvstime,100), 0);
format sastime time7.; * values displayed will be rendered using hh:mm:ss construct;
...