Sas замена символа в строке

Обновлено: 05.07.2024

Презентация на тему: " Преобразование данных. Функции SAS Функции SAS классифицированы по типу данных, с которыми выполняются операции Массив Символьный Дата и время Описательная." — Транскрипт:

2 Функции SAS Функции SAS классифицированы по типу данных, с которими выполняются операции Массив Символьный Дата и время Описательная статистика Финансовые Математические Вероятность Случайное число Тригонметрия Специальные

3 Синтаксис Функции SAS это подпрограмма, которая выполняет вычисления и возвращает значение. Функции используют аргументы, заданные пользователем или переданные операционной средой. Общий формат: function-name(argument-1, argument-2, …) Аргументом может быть константа, переменная или любое выражение SAS, включая функцию.

4 Списки переменных SAS Вместо раздельного ввода переменных можно использовать список переменных SAS: Total = sum(of Qtr1-Qtr4); В функцию будут переданы переменные Qtr1, Qtr2, Qtr3, Qtr4.

5 Списки переменных SAS Список переменных SAS это сокращенный способ указания группы имен переменных. SAS допускает использование следующих списков переменных: Пронумерованный список Диапазон имен Префикс имени Специальные списки имен SAS

6 Списки переменных SAS Списки с пронумерован ими диапазонами x1-xn Включает все переменные с x1 по xn включительно Списки с диапазонами имен xa x-numeric-a x-character-a Включает все переменные в соответствии с их порядком в векторе данных программы с x до a включительно Включает все числовые переменные с x до a включительно Включает все символьные переменные с x до a включительно Списки с префиксами имен REV:Включает все переменные, начинающиеся с REV, например, REVJAN, REVFEB и REVMAR Специальные списки имен SAS _ALL_ _NUMERIC_ _CHARACTER_ Все переменные текущего шага. Все числовые переменные т.ш. Все символьные переменные т.ш.

7 Примеры Total = sum(of Year1-Year4); Total = sum(of Year2--Year4); Total = sum(of Year:);

8 Символьная обработка - Функция SubStr Функция SubStr в правой части оператора присваивания используется для извлечения символов. Общий формат функции Substr: NewVar=Substr(string, start ); Функция SubStr в левой части используется для замены символов.

9 Функция Length Функция Length возвращает длину непустой символьной строки, исключая конечные пробелы. Общий формат функции Length: NewVar = Length(argument);

10 Функция Propcase Функция Propcase преобразует все слова аргумента в смешанный регистр, при этом первая буква становится прописной, а остальные строчними. NewVar = Propcase(argument ); delimiter(s) (разделители) это символы, которые разделяют слова. Если они не указаны, то используются разделители по умолчанию: пробел, /, -, (,. и символ табуляции

11 Другие символьные функции Right(string)Выравнивает символьное выражение по правому краю Left(string)Выравнивает символьное выражение по левому краю Upcase(string)Преобразует все буквы аргумента в прописные Lowcase(string)Преобразует все буквы аргумента в строчные Char(string, position)Возвращает одиночный символ из указанной позиции символьной строки.

12 Функция Scan Функция Scan возвращает n-e слово из символьного значения. NewVar = Scan(string, n ); charlist список символов, разделяющих слова.

13 Фунуция Scan подробная информация При использовании функции Scan: Если в строке менее n слов, то возвращается пропущенное значение; Если значение n отрицательное, то функция Scan выбирает в символьной строке слово, начиная с конца строки; Длина создаваемой переменной равна 200 байтам Рекомендуется в явном виде задавать длину любых создаваемых переменных, используя оператор Length.

14 Фунуция Scan подробная информация При использовании функции Scan: Разделители перед первым словом не учитываются; Разделителями могут служить любые символы или наборы символов; Два или более идущих подряд разделителя обрабатываются как одиночный разделитель

15 Функция Catx Функция Catx объединяет или соединяет символьные строки. NewVar = Catx(separator, string-1, …, string-n); - из каждого аргумента удаляются начальные и конечные пробелы Cat(string-1, …, string-n)Пробелы не удаляются Cats(string-1, …, string-n)Удаляются начальные пробелы Catt(string-1, …, string-n)Удаляются конечные пробелы

16 Оператор конкатенации Оператор конкатенации ещё один способ объединения символьных строк. NewVar = string1 !! string2; Также можно записать вместо !! ||.

17 Функция Find Функция Find ищет в строке указанную подстроку. Position = Find(string, substring ); Функция Find возвращает числовое значение, которое: Является начальной позицией первого вхождения подстроки в строке, если подстрока найдена; Равна нулю, если подстрока не найдена

18 Функция Find Допустимые модификаторы: I обозначает поиск без учета регистра T включает режим игнорирования конечных пробелов в значениях строки и подстроки. startpos указывает, в каком месте строки начнётся поиск. Кроме того, если значение startpos отрицательное, то поиск будет осуществляться в обратном направлении.

19 Функция Substr (в левой части) Substr(string, start ) = value; Этот формат функции substr заменяет символы в символьной переменной

20 Функция Tranwrd Функция tranward заменяет или удаляет все вхождения указанного слова (или шаблона символов) в символьной строке. NewVar = Tranwrd(source, target, replacement); Использование функции tranwrd для замены существующей строки на более длинную строку может привести к усечению получившегося значения, если не использовать оператор Length.

21 Функция Tranwrd При использовании функции Tranwrd действуют следующие правила: Функция Tranwrd не удаляет конечные пробелы из строки поиска и строки замены Если переменная NewVar не была определена ранее, то её длина задаётся равной 200 Если строка поиска не найдена в исходной строке, то замена не осуществляется

22 Функция Compress Функция Compress удаляет символы, указанные в аргументе chars, из строки source. NewVar = Compress(source ); Если символы не указаны, то функция Compress удаляет все пробелы из исходной строки.

23 Другие функции удаления пробелов Trim(string)Удаляет конечные пробелы из символьной строки Strip(string)Удаляет все начальные и конечные пробелы из символьной строки Compbl(string)Удаляет повторяющиеся пробелы из символьной строки, преобразуя все вхождения двух или более последовательных пробелов в одиночный пробел.

24 Обработка числовых значений Функции для усечения числовых значений: Round Ceil Floor Int

25 Функция Round Возвращает значение, округленное до ближайшей кратной единицы округления. NewVar = Round(argument ); round-off-unit положительная числовая единица округления. Если единица не указана, то аргумент округляется до ближайшего целого.

26 Функция Ceil Возвращает наименьшее целое число, большее или равное аргументу. NewVar = Ceil(argument);

27 Функция Floor Возвращает наибольшее целое число, меньшее или равное аргументу. NewVar = Floor(argument);

28 Функция Int Возвращает целую часть аргумента. NewVar = Int(argument);

29 Пример Var1 = 6.478; CeilVar = Ceil(Var1); // 7 FloorVar = Floor(Var1); // 6 IntVar = Int(Var1); // 6

30 Функции описательной статистики Функция Возвращает Sum Mean Min Max NКоличество пропущенных аргументов Nmiss Количество пропущенных числовых аргументов Cmiss Количество пропущенных числовых или символьных аргументов

31 Общий синтаксис function-name(argument-1, argument-2, …, argument-n) Аргумент может быть списком переменных, которому предшествует ключевое слово OF. Функции Sum, Max, Min игнорируют пропущенные значения в аргументах.

32 Преобразование типа Типы данных можно преобразовывать двумя методами: Автоматически, разрешив SAS выполнять эту операцию Явно с помощью функций: Input символьного в числовой Put числового в символьный

33 Автоматическое преобразование символьного типа в числовой SAS автоматически преобразует символьное значение в числовое, если символьное значение используется в числовом контексте, например в следующих случаях: Назначение числовой переменной Арифметическая операция Логическое сравнение с числовым значением Функция принимающая числовые значения

34 Автоматическое преобразование символьного типа в числовой Использует входной формат w.; Создает отсутствующее числовое значение из символьного значения, которое не соответствует стандартной записи чисел (цифры с необязательной десятичной точкой и/или ведущим знаком и/или запись чисел в экспоненциальном представлении)

35 Функция Input Функция Input возвращает значение, создаваемое в результате чтения исходного значения с использованием заданного входного формата. NumVar = Input(source, informat); Source символьное выражение Informat входной формат SAS, применяемый к исходному выражению input(Cvar1, 5.);

36 Смена типа с сохранением имени Просто так сменить тип у переменной нельзя с сохранением имени нельзя. Для этого надо выполнить три шага: 1. Использовать параметр набора данных RENAME=, для переименования переменной, которую надо преобразовать: set orion.convert(rename=(GrossPay=CharGross) );

37 Смена типа с сохранением имени 2. Воспользоваться функцией INPUT в операторе присваивания, чтобы создать новую переменную с исходным именем переименованной переменной. 3. Выполнить DROP= в операторе DATA.

38 Функция Put Функция Put записывает значения в определенном формате: CharVar = Put(source, format); Функция Put возвращает значение, создаваемое в результате записи исходного значения с использованием заданного формата. Всегда возвращает символьную строку. Cavr = put(Nvar, dollar7.);

39 Функция Cat Семейство функций Cat преобразует любые числовые аргументы в символьные строки с использованием формата BEST12., а затем удаляет все начальные пробелы. Phone = cat('(',Code,') ', Mobile);

Тип функции
Функция массива / символьная функция / функция даты / времени / описательная статистическая функция / финансовая функция / математическая функция
Функция вероятности / Функция случайных чисел / Тригонометрическая функция / Специальная функция / Функция преобразования состояния и почтового индекса

Список переменных SAS
Список переменных SAS - это краткая форма для группы переменных, на которые нужно ссылаться
необходимо использовать перед первым именем переменной OF Ключевое слово
Четыре формы:


  • Интервал серийного номера Total = sum(of Year1-Year4);
  • Интервал имени Total = sum(of Year2--Year4);
  • Имя префикса Total = sum(of Year:);
  • Список специальных имен SAS

Обработка символьных переменных

Функции обработки символов

SUBSTR Функция (правая сторона)
Функция SUBSTR в правой части оператора присваивания может использоваться для извлечения символов.
NewVar=SUBSTR(string,start<,length>);

PROPCASE функция
Функция PROPCASE преобразует все символы в переменной вПодходящееФормат.
(первый символ в верхнем регистре, остальные символы в нижнем регистре)
NewVar = PROPCASE(argument <,delimiter(s)>);

  • разделитель (и) - это символ, используемый для разделения. Если отсутствует, разделитель по умолчанию включает пробелы, /, -, табуляции и т. Д.
  • SCAN функция
    используется для возврата n-го слова в строке.
    NewVar = SCAN(string,n<,charlist>);
  • Когда количество символьных значений в строке меньше указанного n, возвращается отсутствующее значение.
  • Когда n отрицательно, функция SCAN выберет символы в конце строки.
  • Длина значения переменной, созданной до того, как инструкция LENGTH не была определена, составляет 200 байтов.
  • Разделитель перед первым символьным значением недопустим.
  • Любой символ или комбинация символов также могут быть использованы в качестве разделителя.
  • Два или более последовательных разделителя рассматриваются как один разделитель
  • CATX функция
    CATX может соединять строки символов.
    NewVar = CATX(separator, string-1, … ,string-n)
  • разделитель, это строка, которая будет вставлена ​​в параметры каждого соединения.
  • Если вы ранее не определили NewVar с помощью оператора LENGTH, длина созданного NewVar составит 200 байт.

Присоединиться к оператору
!! Или ||

FIND функция
Функция FIND ищет указанную подстроку в целевой строке.
Если найденная подстрока найдена, вернитесь в положение, где она впервые появилась. Если не найдено, вернуть значение 0
Position = FIND(string,substring <,modifiers,startpos> );

  • Модификаторы могут быть
    I Указывает на поиск без учета регистра.
    T Указывает, что завершающие пробелы в строке и подстроке игнорируются.
  • startpos указывает, где начать поиск подстрок.
  • SUBSTR Функция (слева)
    (слева от оператора присваивания) используется для замены символов в символьных переменных.
    SUBSTR(string,start<,length>)=value;
  • длина указывает длину заменяемого символа в строке. Если он отсутствует, все символы от начальной позиции до конца строки заменяются.
  • Значение Length не может быть больше длины оставшихся символов (включая завершающие пробелы)
  • TRANWRDфункция
    Используйте функцию TRANWRD, чтобы заменить или очистить значения символов или строки, указанные в строке.
    NewVar = TRANWRD(source,target,replacement);
  • Функция TRANWRD не удаляет завершающий пробел в цели или замене.
  • Если длина не предопределена, длина новой переменной NewVar будет 200 байтов.
    Если в искомом исходном символе нет целевого символа, замена не будет

COMPRESS функция
может удалить указанный символ из исходного символа.
(Если вы не укажете удаляемый символ, функция COMPRESS преобразует исходный символ
(Все пробелы в удалены)
NewVar = COMPRESS(source<,chars>);

Другие функции обработки символов

случай

Числовая обработка переменных

Функция округления

ROUND: Приблизительное округление NewVar = ROUND (аргумент <, округленная единица (наименьшая приблизительная единица)>);
CEIL:Округлен NewVar = CEIL(argument);
FLOOR: Округлить вниз NewVar = FLOOR(argument);
INTВозвращает целочисленное значение NewVar = INT(argument);

Описательные статистические функции


  • Все параметры должны быть числовыми.
  • Параметр может быть списком переменных, начинающихся с OF.
  • Функции SUM, MEAN, MAX и MIN игнорируют пропущенные значения в параметрах

Преобразование типа переменной

Преобразовать символ в число
  • Автоматическое преобразование
    В числовой среде SAS автоматически преобразует символьные переменные в числовые переменные.
    → Применимые сценарии:
    • Присвоить числовую переменную
    • Арифметический оператор используется
    • Логическое сравнение со значениями
    • Используется для функции, которая требует числовых параметров

    Необходимо использовать формат ввода w; для символов, которые не соответствуют стандартному числовому формату, значение пропущенного значения выражается [значение переменной, содержащее запятую ( 1,742.64 ), не может использовать w. Формат ввода автоматически преобразуется, поскольку ему присваивается пропущенное значение; требуется принудительное преобразование]


    • Приведение функции INPUT
      Функция INPUT считывает исходные данные в указанном формате ввода и возвращает соответствующее значение (информация о преобразовании не выводится в окно журнала)
      NumVar = INPUT(source,informat);
    • Преобразовать символьную переменную в другой тип данных
      Переменная может быть только символьной или числовой. Как только тип данных переменной определен, его нельзя изменить.
      GrossPay=input(GrossPay,comma6.); ошибка! GrossPay изначально является символьным типом, и ему нельзя присвоить числовое значение.
      Правильный путь:
      STEP1: использование RENAME= Переименуйте переменную, которую вы хотите конвертировать.
      STEP2: использование INPUT Функция создает новую переменную с тем же именем в операторе присваивания.
      ШАГ 3. Используйте опцию DROP = в операторе DATA, чтобы удалить исходную переменную из набора выходных данных.
      (Во время компиляции этой программы в PDV была создана новая числовая переменная с именем GrossPay.)
    Преобразовать число в символ
    • Автоматическое преобразование
      В среде символов SAS автоматически преобразует числовые данные в тип символов.
      • Применимая ситуация:
        → присвоить значение символьной переменной
        → Используется для подключения операторов
        → функция для использования символьных параметров
      • нота:
        → Автоматическое преобразование с использованием BEST12. Выходной формат
        → Выравнивание данных символов по правому краю
        (Чтобы внести исправления, используйте функцию PUT, чтобы принудительно преобразовать числовой тип в тип символов)
      • Общие выходные форматы
        W.d Записать числовое значение как символьное числовое значение
        Zw. Введите числовое значение, вставьте 0 вперед
      случай



      Использовать в заявлении PROC CONTENTSVARNUM Возможность вывода всех переменных в наборе данных в их логическом порядке.

      Я пытаюсь удалить все экземпляры нескольких подстрок из одного из полей.

      Метод, который я нашел до сих пор, в основном вызывает tranwrd для каждой ошибочной подстроки.

      В приведенном ниже примере их три, но в реальных наборах данных их немало.

      Разве можно было сделать то же самое с помощью одного заявления?

      То есть учитывая полный список строк для удаления, удалите их все.

      С некоторыми возни, придумал ниже:

      Делает трюк без вложенности (я действительно не хочу вкладывать 10-15 транзитных вызовов) или несколько почти идентичных операторов обновления.

      Регулярное выражение - это то, что я надеялся использовать

      Это может быть сделано с помощью регулярных выражений путем объединения строк с использованием символа канала '|' что означает «ИЛИ» в регулярных выражениях:

      Это особенно удобно, если вы пытаетесь удалить целые слова, что нелегко с tranwrd, в этом случае вы просто меняете регулярное выражение на:

      Где \ b означает границу слова (все, что не является буквой / цифрой / подчеркиванием) и \ s? part заботится о возможном лишнем пробеле после удаленного слова. Это изменится

      Или запустите применить дополнительное регулярное выражение, которое будет экранировать все специальные символы:

      Вы можете просто прочитать каждое слово и оценить, сохранить его или отказаться от него.

      Вы можете сделать более или менее то же самое с помощью регулярных выражений:

      По причинам, которые остаются для меня неясными, это оставляет вас с двумя пробелами, когда совпадающее слово между двумя другими словами удаляется, тогда как ваш исходный код оставляет три. Тем не менее, я подозреваю, что это, вероятно, не имеет значения для ваших целей.

      Одного прохода над набором целей удаления не обязательно достаточно.
      Надежное сокращение потребует нескольких проходов, пока полный обход не вызовет замен.

      Вот пример шага Proc DS2, который определяет повторно используемый метод cleaner и использует его в программе data :

      Регулярные выражения - это простой и эффективный подход, цикл do - это другой подход, как вы упомянули, но с массивом.

      call missing(of x1-x2);

      call missing (of _all_);

      call missing (of _char_);

      SAS может зачитывать даты практически любого формата, как, например, такие:

      Дата Описание
      10/21/1950 Month/Day/Year
      21-10-1950 Day-Month-Year
      21Oct1950 Day Month Abbreviation Year
      50294 Julian Date

      Однако все они хранятся в SAS как число, а именно, количество дней с 1 Января 1960 года (все даты, после этой – это положительные числа, до - отрицательные). Вот пример как в SAS хранятся даты:

      Дата SAS значение
      January 1, 1960 0
      January 2, 1960 1
      December 31, 1959 -1
      June 15, 2006 16967
      October 21, 1950 -3359

      Давайте теперь познакомимся с некоторыми часто используемыми форматами для даты. Для этого рассмотрим следующий отрывок кода

      Как мы уже с вами знаем, значение 1 в SAS соответствует дате 2 Января 1960. Однако, накладывая формат на переменную date, мы можем менять внешний вид этой даты. Давайте посмотрим на самые часто используемые форматы и то, как будет выглядеть одна и та же дата под разными форматами.

      Название формата Результат
      date9. 02JAN1960
      date. 02JAN60
      is8601da. 1960-01-02
      ddmmyy10. 02/01/1960
      ddmmyy8. 02/01/60
      ddmmyy. 02/01/60
      mmddyy10. 01/02/1960
      mmddyy. 01/02/60
      yymmdd6. 600102
      yymmdd8. 60-01-02
      yymmdd10. 1960-01-02

      Особое внимание следует обратить на эти два формата: ddmmyy. и mmddyy. Бывают случаи, когда их можно перепутать. В частности, если в данных не встретилось дня больше 12, тогда сложно понять, что же тут день, а что месяц. В таких ситуациях, всегда лучше перестраховаться и уточнить.

      Бывают случаи, когда вам нужно руками ввести какую-то определенную дату, чтобы что-то посмотреть, или проверить, или это какая-то значимая дата внутри проекта и вам нужно ее часто использовать и т.д. Например, это 06JUL1991. Согласитесь, навскидку и не скажешь сколько же это дней после 01JAN1960. Было бы странным, если бы SAS не оставил нам возможности ввести дату, как число, которое хранится в SAS, однако на понятном человеку языке. Я думаю, что было бы немало проблем, если всякий такой раз нужно было отдельно вычислять разницу с 01JAN1960 и вводить дату только как целое число. Для того, чтобы ввести дату, но чтобы SAS понял, что это именно дата, а не что-то другое, необходимо записать ее как date constant:

      Давайте проверим, что же из этого получится.

      Lesson2.3.1

      Как видим, SAS распознал, что это дата и хранит ее как целое число. К сожалению, для date constant есть некоторые требования. Она обязательно должна выглядеть следующим образом: <1-2 цифры дня> <трехбуквенная аббревиатура месяца> <2 или 4 цифры года> в одинарных или двойных кавычках после чего d или D. Т.е. такую запись ‘01/06/1991’d SAS не распознает и в придачу ругнется на вас в логе.

      А теперь давайте представим следующую ситуацию. Допустим, пациенту измерили давление в тот же день когда он принял исследуемый препарат. И представим даже, что давление это оказалось не совсем в норме. И вот тут вам важно очень знать, измерили давление до приема лекарства или после. Ведь если после, то, возможно, повышение давления связано именно с приемом этого лекарства. В таком случае вам нужно время замера и время приема лекарства. На практике, работать с датой/временем приходится очень часто, поэтому давайте поговорим о времени в SAS.

      Посмотрим, чему соответствует 0, 1, 2 в SAS, наложи мы на него формат datetime16.

      SAS значение Дата/Время
      0 01JAN60:00:00:00
      1 01JAN60:00:00:01
      2 01JAN60:00:00:02

      Как видим, мы уже имеем другие значения, не те, что были в примере с датами. Это говорит нам о том, что накладывая формат или делая какие-либо преобразования с датами, мы должны четко понимать, что именно хранится в переменной, иными словами, чему будет соответствовать единица – первой секунде первого января 60 года, или второму января 60 года.

      После того, как мы убедились, что в нашей переменной хранится значение datetime, давайте посмотри, как будет выглядеть значение 20000 под разными форматами.

      Название формата Результат
      datetime. 01JAN60:05:33:20
      datetime16. 01JAN60:05:33:20
      datetime14. 01JAN60:05:33
      is8601dt. 1960-01-01T05:33:20
      dateampm. 01JAN60:05:33:20 AM
      hhmm. 5:33
      time. 5:33:20
      time5. 5:33
      is8601tm. 05:33:20
      tod. 05:33:20
      tod5. 05:33

      Вполне естественно, что в SAS существуют некоторые функции, направленные на работу с датами/временем и только. Давайте познакомимся с некоторыми из них.

      YRDIF(start-date, end-date, <basis>), где:

      • start-date – начальная дата
      • end-date – конечная дата
      • <basis> – опциональный аргумент, который указывает как именно считать эту разницу. Чаще всего используется 'ACT/ACT', который говорит SAS использовать реальное количество дней в каждом месяце, а также учитывать високосный год.

      WEEKDAY(date), где:

      day(date), где:

      month(date), где:

      year(date), где:

      mdy(month,day,year), где:

      • month, day, year – числа либо переменные, задающие месяц, день и год

      intck(interval,start-date,end-date), где:

      • interval – интересующий нас интервал, например, year, semi-year (полугодие), qtr (квартал), month, week, weekday (по умолчанию week без Sunday and Saturday)
      • start-date – начальная дата
      • end-date – конечная дата

      Давайте рассмотрим несколько примеров того, как именно работает эта функция:

      Expression Value Returned
      intck('year', '01Jan2005'd, '31Dec2005’d) 0
      intck ('year', '31Dec2005'd, '01Jan2006’d) 1
      intck ('month', '01Jan2005'd, '31Jan2005'd) 0
      intck ('month', '31Jan2005'd, '01Feb2005'd) 1
      intck ('qtr', '25Mar2005'd, '15Apr2005'd) 1

      Как мы видим, в первом случае intck вернет нам значение 0, т.к. обе даты – в пределах одного календарного года, в то время как во втором случае мы один раз пересекли границу интервала и в итоге получили значение 1. Аналогично с интервалами month и qtr.

      Выражение DO WHILE вычисляется в верхней части цикла DO. Если выражение ложно в первый раз, когда оно вычисляется, цикл DO никогда не выполняется. Принимая во внимание, что до выполнения выполняется по крайней мере один раз.

      Используя опцию MAXDEC =

      Разница между этими двумя процедурами заключается в том, что PROC MEANS создает отчет по умолчанию. Напротив, для создания отчета в PROC SUMMARY необходимо включить параметр PRINT в оператор PROC SUMMARY.

      Используя TABLES Statement.

      Двойной завершающий знак (@@) говорит SAS, вместо того, чтобы переходить к новой записи, хранить текущую входную запись для выполнения следующего оператора INPUT.

      Использование DROP, KEEP утверждений и параметров набора данных.

      Он производит статистику по умолчанию MIN, MAX, MEAN и STD DEV.

      Его также можно использовать для записи вывода без создания набора данных.

      С помощью PROC SORT с параметрами NODUPKEY и NODUP.

      Параметр NODUPKEY удаляет дубликаты наблюдений, когда значение переменной, указанной в операторе BY, повторяется, а параметр NODUP удаляет дубликаты наблюдений, когда значения во всех переменных повторяются (идентичные наблюдения)

      Используйте ключевое слово DESCENDING в коде PROC SORT.

      Создавая переменную с другим именем, используя функцию PUT.

      Создавая переменную с другим именем, используя функцию INPUT.

      SET объединяет наборы данных, где MERGE соответствует наблюдениям наборов данных

      SYMPUT помещает значение из набора данных в макропеременную, где SYMGET получает значение из макропеременной в набор данных.

      Функция INTNX увеличивает значение даты, времени или даты / времени на заданный интервал и возвращает значение даты, времени или даты / времени.

      Оператор RETAIN говорит SAS не устанавливать переменные в значение пропущенные при переходе от текущей итерации шага DATA к следующему. Вместо этого SAS сохраняет значения.

      % EVAL не может выполнять арифметические вычисления с операндами, которые имеют значения с плавающей запятой. Это когда функция% SYSEVALF входит в картину.

      Читайте также: