Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 8 лет назад пользователемАнастасия Докукина
1 Глава 7 Преобразование данных
2 Раздел 7.1 Введение
3 3 Цели Изучить синтаксис SAS функций.
4 4 SAS функции Система SAS предоставляет большой набор функций для управления данными на этапе выполнения шага данных. SAS функций организуют в категории по типу манипуляций над данными: усечение усечение символьная символьная дата и время дата и время математическая математическая тригонометрическая тригонометрическая специальная специальная статистические методы арифметическая финансовая случайное число штат и ZIP код (US).
5 5 Синтаксис SAS функций SAS функции – это встроенные выражения, которые позволяют выполнять различные виды манипуляций над данными. SAS функция возвращает значение, основанное на аргументах. Функции используют аргументы, которые задает пользователь или операционная среда. Общая форма записи SAS функции: function-name(argument-1,argument-2,…,argument-n)
6 6 Применение SAS функций SAS функция может быть задана в любом месте SAS выражения до тех пор, пока функция является частью предложения. data contrib; set prog2.donate; Total=sum(Qtr1,Qtr2,Qtr3,Qtr4); if Total ge 50; run; proc print data=contrib noobs; run;
7 7 Применение SAS функций PROC PRINT Output PROC PRINT Output ID Qtr1 Qtr2 Qtr3 Qtr4 Total E E E E E
8 8 Задание списка переменных Список SAS переменных – это сокращенный метод сослаться на перечень имен переменных, которые могут быть использованы в качестве аргументов. В этом случае перечень или массив предваряется словом OF.
9 9 Задание списка переменных Если аргументы задаются с помощью перечисления переменных, убедитесь, что вначале списка стоит ключевое слово OF. Если вы пропустите слово OF, то аргументы функции могут быть интерпретированы иначе, например, как разница двух значений. data contrib; set prog2.donate; Total=sum(of Qtr1-Qtr4); if Total ge 50; run;
10 Раздел 7.2 Модификация символьных значений
11 11 Цели Использовать SAS функции и операторы для извлечения, редактирования и поиска символьных значений.
12 12 Задача Набор данных prog2. freqflyers содержит информацию о постоянных клиентах авиакомпании. Используйте эту таблицу, чтобы создать новый набор с удобной информацией для почтовых рассылок.
13 13 Задача ID это символьная переменная. Последняя цифра в этой переменной обозначает пол клиента ( 1 – женский, 2 – мужской). prog2. freqflyers prog2. freqflyers ID Name Address1 Address2 F31351 Farr,Sue 15 Harvey Rd. Macon,Bibb,GA,31298 F161 Cox,Kay B. 163 McNeil Pl. Kern,Pond,CA,93280 F212 Mason,Ron 442 Glen Ave. Miami,Dade,FL,33054 F25122 Ruth,G. H Brady St. Munger,Bay,MI,48747
14 14 Задача labels labels Первая задача – присвоить титул Mr. или Ms. к имени на основе последней цифры переменной ID. FullName Address1 Address2 Ms. Sue Farr 15 Harvey Rd. Macon, GA Ms. Kay B. Cox 163 McNeil Pl. Kern, CA Mr. Ron Mason 442 Glen Ave. Miami, FL Mr. G. H. Ruth 2491 Brady St. Munger, MI 48747
15 15 Функция SUBSTR (правая часть) Функция SUBSTR используется для выделения подстроки из символьной переменной или замены содержимого символьной переменной. Данная форма функции SUBSTR (в правой стороне выражения) выделяет символы из переменной. NewVar=SUBSTR(string,start );
16 16... Функция SUBSTR (правая часть) Выделить два символа из переменной Location, начиная с 11-ой позиции. State=substr(Location,11,2); STATE $ 18 OH LOCATION $ 18 Columbus, OH 43227
17 17 proc print data=prog2. freqflyers noobs; var ID; run; Задача ID F31351 F161 F212 F25122 PROC PRINT Output
18 18... Функция RIGHT Функция RIGHT выравнивает аргумент по правому краю. Замыкающие пробелы перемещаются в начало значения. NewID=right(ID); NewVar=RIGHT(argument); NEWID $ 6 F161 ID $ 6 F161
19 19 data labels; set prog2.freqflyers; if substr(right(ID),6)='1' then Title='Ms.'; else if substr(right(ID),6)='2' then Title='Mr.'; run; proc print data=labels noobs; var ID Title; run; Задача Результат функции RIGHT работает как первый аргумент функции SUBSTR.
20 20 Задача ID Title F31351 Ms. F161 Ms. F212 Mr. F25122 Mr. PROC PRINT Output
21 21... Задача Следующая задача – разделить имена клиентов на две части. NAME Farr,Sue Cox,Kay B. FMNAME Sue Kay B. LNAME Farr Cox
22 22 Функция SCAN Функция SCAN выделяет указанное слово из строки с использованием разделителя. Эту функцию лучше использовать, когда вам известен порядок слов в символьной переменной, изменяется исходная позиция слов, слова помечены разделителями. NewVar=SCAN(string,n );
23 23 Функция SCAN назначает длину 200 байт для каждой искомой переменной, если ранее не задан оператор LENGTH назначает длину 200 байт для каждой искомой переменной, если ранее не задан оператор LENGTH разделители перед первым словом не учитываются разделители перед первым словом не учитываются любой символ может использоваться в качестве разделителя любой символ может использоваться в качестве разделителя два или более последовательных разделителя рассматриваются как один два или более последовательных разделителя рассматриваются как один если слов в строке меньше, чем n, то возвращается пустое значение если слов в строке меньше, чем n, то возвращается пустое значение если n – отрицательное, SCAN извлекает слово из символьной переменной, начиная отсчет с конца строки. если n – отрицательное, SCAN извлекает слово из символьной переменной, начиная отсчет с конца строки.
24 24... SECOND $ 200 and Second=scan(Phrase,2,' '); Функция SCAN Выделить второе слово из переменной Phrase. PHRASE $ 21 software and services 123
25 25... Second=scan(Phrase,2,':'); Функция SCAN Выделить второе слово из переменной Phrase. 12 SECOND $ 200 services PHRASE $ 21 software and:services
26 26... VAR3 $ 200 Функция SCAN VAR2 $ data scan; Text='(Thursday July 4, 1776)'; Var1=scan(Text,1); Var2=scan(Text,4); Var3=scan(Text,5); Var4=scan(Text,2,','); Var5=scan(Text,2,',)'); run; VAR1 $ 200 Thursday
27 27... Функция SCAN VAR4 $ ) data scan; Text='(Thursday July 4, 1776)'; Var1=scan(Text,1); Var2=scan(Text,4); Var3=scan(Text,5); Var4=scan(Text,2,','); Var5=scan(Text,2,',)'); run; VAR1 $ 200 Thursday VAR2 $ VAR3 $ 200
28 28 VAR5 $ Функция SCAN data scan; Text='(Thursday July 4, 1776)'; Var1=scan(Text,1); Var2=scan(Text,4); Var3=scan(Text,5); Var4=scan(Text,2,','); Var5=scan(Text,2,',)'); run;... VAR1 $ 200 Thursday VAR2 $ VAR3 $ 200 VAR4 $ )
29 29... Функция SCAN VAR1 $ 200 Thursday VAR2 $ VAR3 $ 200 VAR4 $ ) VAR5 $ data scan; Text='(Thursday July 4, 1776)'; Var1=scan(Text,1); Var2=scan(Text,4); Var3=scan(Text,5); Var4=scan(Text,2,','); Var5=scan(Text,2,',)'); run;
30 30 Задача data labels; length FMName LName $ 10; set prog2.freqflyers; if substr(right(ID),6)='1' then Title='Ms.'; else if substr(right(ID),6)='2' then Title='Mr.'; FMName=scan(Name,2,','); LName=scan(Name,1,','); run;
31 31 proc print data=labels noobs; var ID Name Title FMName LName; run; Задача ID Name Title FMName LName F31351 Farr,Sue Ms. Sue Farr F161 Cox,Kay B. Ms. Kay B. Cox F212 Mason,Ron Mr. Ron Mason F25122 Ruth,G. H. Mr. G. H. Ruth Следующая задача – соединить вместе значения Title, FMName и LName. PROC PRINT Output
32 32 Оператор объединения Оператор объединения соединяет символьные значения. Символ для соединения символьных значений, в зависимости от возможностей вашей клавиатуры, может быть представлен как два знака восклицания (!!), две вертикальных черты (||), или две прерывистые черты (¦¦). NewVar=string1 !! string2;
33 33... Sue Farr FULLNAME $ 20 Оператор объединения Соединить значения FMName и LName, чтобы создать FullName. FullName=FMName !! LName; Sue FMNAME $ 10 Farr LNAME $ 10
34 34 Функция TRIM Функция TRIM удаляет замыкающие пробелы из аргумента. Если аргументом функции является пробел, то TRIM возвращает один пробел. NewVar=TRIM(argument1) !! argument2;
35 35 Функция TRIM... data trim; length FMName LName $ 10; FMName='Sue'; LName='Farr'; FullName1=trim(FMName); FullName2=trim(FMName) !! LName; FullName3=trim(FMName) !! ' ' !! LName; run; FULLNAME1 $ 10 FULLNAME2 $ 20 SueSueFarr FULLNAME3 $ 21
36 36... Функция TRIM Функция TRIM FULLNAME1 $ 10 FULLNAME2 $ 20 SueSueFarr FULLNAME3 $ 21 data trim; length FMName LName $ 10; FMName='Sue'; LName='Farr'; FullName1=trim(FMName); FullName2=trim(FMName) !! LName; FullName3=trim(FMName) !! ' ' !! LName; run;
37 37 Задача data labels(keep=FullName Address1 Address2); length FMName LName $ 10; set prog2.freqflyers; if substr(right(ID),6)='1' then Title='Ms.'; else if substr(right(ID),6)='2' then Title='Mr.'; FMName=scan(Name,2,','); LName=scan(Name,1,','); FullName=Title !! ' ' !! trim(FMName) !! ' ' !! LName; Address2=scan(Address2,1,',') !! ', ' !! scan(Address2,3,',') !! ' ' !! scan(Address2,4,','); run;
38 38 Задача FullName Address1 Address2 Ms. Sue Farr 15 Harvey Rd. Macon, GA Ms. Kay B. Cox 163 McNeil Pl. Kern, CA Mr. Ron Mason 442 Glen Ave. Miami, FL Mr. G. H. Ruth 2491 Brady St. Munger, MI proc print data=labels noobs; var FullName Address1 Address2; run; PROC PRINT Output
39 39 Задача Набор данных prog2. ffhistory содержит дополнительную информацию о каждом постоянном клиенте. Эта информация включает данные о статусе услуг, которые получает данный клиент (bronze, silver или gold) год перехода клиента на следующий уровень. Создать отчет, который показывает всех постоянных клиентов, имеющих статус Silver и год, когда они получили этот статус.
40 40 Задача prog2. ffhistory Seat ID Status Pref F31351 Silver 1998,Gold 2000 AISLE F161 Bronze 1999 WINDOW F212 Bronze 1992,silver 1995 WINDOW F25122 Bronze 1994,Gold 1996,Silver 1998 AISLE Необходимо из переменной Status выделить значение Silver.
41 41 Функция INDEX позволяет отыскивать символьное значение для определенной строки. Функция INDEX перебирает значения слева направо, разыскивая первое упоминание в строке. Она возвращает позицию первого символа строки; если строка не найдена, то присваивает значение 0. Функция INDEX Position=INDEX(target,value);
42 42... POS N 8 24 Text="This target contains a BULL'S-EYE."; Pos=index(Text,"BULL'S-EYE"); Функция INDEX Определить, содержит ли переменная Text строку "BULL'S-EYE". TEXT $ 34 This target contains a BULL'S-EYE. 24
43 43... POS3 N 8 0 Функция INDEX POS2 N 8 8 POS1 N 8 6 data index; Text='DELIMIT IT WITH BLANKS.'; Pos1=index(Text,'IT'); Pos2=index(Text,' IT '); Pos3=index(Text,'it'); run; 68
44 44... Функция INDEX data index2; length String $ 5; String='IT'; Text='DELIMIT IT WITH BLANKS.'; Pos4=index(Text,String); Pos5=index(Text,trim(String)); Pos6=index(Text,' ' !! trim(String) !! ' '); run; 68 STRING $ 5 IT POS6 N 8 8 POS5 N 8 6 POS4 N 8 0
45 45 Задача Seat ID Status Pref F31351 Silver 1998,Gold 2000 AISLE F161 Bronze 1999 WINDOW F212 Bronze 1992,silver 1995 WINDOW F25122 Bronze 1994,Gold 1996,Silver 1998 AISLE prog2. ffhistory data silver; set prog2.ffhistory; if index(Status,'Silver') > 0; run;
46 46 Seat ID Status Pref F31351 Silver 1998,Gold 2000 AISLE F25122 Bronze 1994,Gold 1996,Silver 1998 AISLE proc print data=silver noobs; run; Задача PROC PRINT Output
47 47 Функция UPCASE переводит все буквы символьной строки в верхний регистр переводит все буквы символьной строки в верхний регистр не влияет на цифры и специальные символы. не влияет на цифры и специальные символы. NewVal=UPCASE(argument);
48 48 Задача data silver(drop=Location); length Year $ 4; set prog2.ffhistory; Location=index(upcase(Status),'SILVER'); if Location > 0; Year=substr(Status,Location+7,4); run; proc print data=silver noobs; var ID Status Year SeatPref; run;
49 49... Задача Seat ID Status Year Pref F31351 Silver 1998,Gold AISLE F212 Bronze 1992,silver WINDOW F25122 Bronze 1994,Gold 1996,Silver AISLE Year=substr(Status,Location+7,4); LocationLocation+7
50 50 Функция TRANWRD Функция TRANWRD заменяет указанную подстроку символов на новую. где source определяет строку, которую вы хотите преобразовать target указывает на строку, которую SAS ищет в source replacement определяет строку, которую подставляет target. NewVal=TRANWRD(source,target,replacement);
51 51... DESSERT $ 20 Apple pie DESSERT $ 20 Pumpkin pie Dessert=tranwrd(Dessert,'Pumpkin','Apple'); Функция TRANWRD Заменить первое слово переменной Dessert.
52 52 Задача data silver(drop=Location); length Year $ 4; set prog2.ffhistory; Status=tranwrd(Status,'silver','Silver'); Location=index(Status,'Silver'); if Location > 0; Year=substr(Status,Location+7,4); run; proc print data=silver noobs; var ID Status Year SeatPref; run;
53 53 Задача Seat ID Status Year Pref F31351 Silver 1998,Gold AISLE F212 Bronze 1992,Silver WINDOW F25122 Bronze 1994,Gold 1996,Silver AISLE PROC PRINT Output
54 54 Функция LOWCASE переводит все буквы символьной строки в нижний регистр переводит все буквы символьной строки в нижний регистр не влияет на цифры и специальные символы. не влияет на цифры и специальные символы. NewVal=LOWCASE(argument);
55 55 Функция SUBSTR (левая часть) Функция SUBSTR используется для выделения подстроки или модификации значений переменных. Данная форма функции SUBSTR (в левой стороне выражения) используется для модификации значений переменных. SUBSTR(string,start )=value;
56 56... Заменить два символа переменной Location, начиная с 11-ой позиции. Функция SUBSTR (левая часть) substr(Location,11,2)='OH'; LOCATION $ 18 Columbus, OH LOCATION $ 18 Columbus, GA 43227
57 57... data silver; set silver; substr(SeatPref,2)= lowcase(substr(SeatPref,2)); run; SEATPREF $ 6 A Функция LOWCASE SEATPREF $ 6 AISLE isle
58 58 proc print data=silver noobs; var ID Year SeatPref; run; Задача Seat ID Year Pref F Aisle F Window F Aisle PROC PRINT Output
59 Раздел 7.3 Преобразование числовых значений
60 60 Цели Использовать SAS функции для усечения числовых значений. Использовать SAS функции для усечения числовых значений. Использовать SAS функции для вычисления простых статистик числовых значений. Использовать SAS функции для вычисления простых статистик числовых значений.
61 61 Функции усечения Указанные функции позволяют выполнить усечение значения переменной: функция ROUND функция ROUND функция CEIL функция CEIL функция FLOOR функция FLOOR функция INT. функция INT.
62 62 Функция ROUND Функция ROUND возвращает округленное значение с заданной точностью. Если точность не задана, то округление происходит до ближайшего целого. NewVar=ROUND(argument );
63 63... Функция ROUND NEWVAR4 100 NEWVAR NEWVAR NEWVAR1 12 data truncate; NewVar1=round(12.12); NewVar2=round(42.65,.1); NewVar3=round(6.478,.01); NewVar4=round(96.47,10); run;
64 64... Функция CEIL Функция CEIL возвращает наименьшее целое, которое больше чем или равно значению аргумента X 4.4 x=5; NewVar=CEIL(argument); x=ceil(4.4);
65 65... Функция FLOOR Функция FLOOR возвращает наибольшее целое, которое меньше, чем или равно значению аргумента. X 3.6 NewVar=FLOOR(argument); y=3; y=floor(3.6);
66 66... Функция INT Функция INT возвращает целую часть аргумента. NewVar=INT(argument); X z=3; z=int(3.9);
67 67... Функции усечения NEWVAR3 6 NEWVAR2 6 NEWVAR1 7 VAR data truncate; Var1=6.478; NewVar1=ceil(Var1); NewVar2=floor(Var1); NewVar3=int(Var1); run;
68 68... Функции усечения NEWVAR3 -6 NEWVAR2 -7 NEWVAR1 -6 VAR data truncate; Var1=-6.478; NewVar1=ceil(Var1); NewVar2=floor(Var1); NewVar3=int(Var1); run;
69 69 Создание новых числовых переменных Указанные функции выполняют вычисление простых статистик: функция SUM (сумма значений) функция SUM (сумма значений) функция MEAN (среднее значение) функция MEAN (среднее значение) функция MIN (наименьшее значение) функция MIN (наименьшее значение) функция MAX (наибольшее значение). функция MAX (наибольшее значение).
70 70 Функция SUM Функция SUM обеспечивает суммирование значений, при этомпустые значения игнорируются. NewVar=SUM(argument-1,argument-2,…,argument-n);
71 71 Функция SUM... Каким будет значение переменной NewVar, если использовать арифметический оператор вместо функции SUM? NEWVAR 18 VAR3 6 VAR2. VAR1 12 data summary; Var1=12; Var2=.; Var3=6; NewVar=sum(Var1,Var2,Var3); run;
72 72... Функция MEAN Функция MEAN Функция MEAN возвращает арифметическое среднее, при этомпустые значения игнорируются. NewVar=MEAN(argument-1,argument-2,…,argument-n);
73 73... Функция MEAN NEWVAR 9 VAR3 6 VAR2. VAR1 12 data summary; Var1=12; Var2=.; Var3=6; NewVar=mean(Var1,Var2,Var3); run;
74 Раздел 7.4 Создание числовых переменных, основанных на датах
75 75 Цели Изучить SAS функции, используемые для создания значений даты в формате SAS. Изучить SAS функции, используемые для создания значений даты в формате SAS. Изучить SAS функции, которые извлекают информацию из значений SAS даты. Изучить SAS функции, которые извлекают информацию из значений SAS даты. Использовать SAS функции для определения интервалов между двумя значениями SAS даты. Использовать SAS функции для определения интервалов между двумя значениями SAS даты.
76 76 Создание значений SAS даты Вы можете использовать функции MDY или TODAY, чтобы получить значение даты в формате SAS. Функция MDY создает SAS дату из значений месяц, день и год. Функция TODAY возвращает SAS представление текущей даты. NewDate=MDY(month,day,year); NewDate=TODAY();
77 77 Извлечение информации Вы можете использовать функции MONTH, DAY и YEAR, чтобы извлечь информацию из значения даты в формате SAS. Функция MONTH создает числовое значение (1- 12), которое представляет порядковый номер месяца. NewMonth=MONTH(SAS-date-value); Продолжение...
78 78 Извлечение информации Функция DAY создает числовое значение (1-31), которое представляет собой день месяца. Функция YEAR создает четырехзначное число, которое представляет собой значение года. NewDay=DAY(SAS-date-value); NewYear=YEAR(SAS-date-value);
79 79 Вычисление временного интервала Результатом функции YRDIF является количество лет между двумя значениями SAS даты. NewVal=YRDIF(sdate,edate,basis);
80 80... Функция YRDIF Например, переменная DOB – день рождения. Предположим, что сегодня – 3 мая 2008 г., а DOB – это 8 ноября 1972 г. С помощью функции YRDIF можно подсчитать возраст: MyVal=yrdif(DOB,'3may2008'd,'act/act'); MYVAL
81 Раздел 7.5 Преобразование типа переменной
82 82 Цели Изучить автоматическое преобразование символьных данных в числовые данные. Изучить автоматическое преобразование символьных данных в числовые данные. Явно преобразовать символьные данные в числовые. Явно преобразовать символьные данные в числовые. Изучить автоматическое преобразование числовых данных в символьные данные. Изучить автоматическое преобразование числовых данных в символьные данные. Явно преобразовать числовые данные в символьные. Явно преобразовать числовые данные в символьные.
83 83 Преобразование данных При решении некоторых задач может потребоваться преобразование одного типа данных в другой. Вы можете считывать цифры из символьного представления в числовое значение. Вы можете считывать цифры из символьного представления в числовое значение. Вы можете записывать числовое значение в символьную строку. Вы можете записывать числовое значение в символьную строку.
84 84 Преобразование данных Вы можете преобразовать типы данных неявно, позволив выполнить это преобразование системе SAS неявно, позволив выполнить это преобразование системе SAS явно, с помощью функций: явно, с помощью функций: INPUTпреобразование символ-в-число INPUTпреобразование символ-в-число PUTпреобразование число-в-символ. PUTпреобразование число-в-символ.
85 85 Автоматическое преобразование символа в число Набор данных prog2.salary1 содержит символьную переменную Grosspay. Для каждого сотрудника нужно вычислить бонус в размере 10% от зарплаты. Что произойдет, если использовать символьное значение Grosspay в арифметическом выражении?
86 86 Автоматическое преобразование символа в число prog2.salary1 data bonuses; set prog2.salary1; Bonus=.10*GrossPay; run; ID GrossPay $11 $
87 87 Partial Log 2 data bonuses; 3 set prog2.salary1; 4 Bonus=.10*GrossPay; 5 run; NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column). 4:14 NOTE: The data set WORK.BONUSES has 3 observations and 3 variables. Автоматическое преобразование символа в число
88 88 ID GrossPay Bonus proc print data=Bonuses noobs; run; Автоматическое преобразование символа в число PROC PRINT Output
89 89 SAS автоматически преобразует символьное значение в числовое, когда символьное значение используется в числовом контексте, например, назначается для ранее определенной числовой переменной назначается для ранее определенной числовой переменной участвует в арифметической операции участвует в арифметической операции сравнивается с числовым значением с помощью оператора сравнения сравнивается с числовым значением с помощью оператора сравнения задается в функции, которая требует числовых аргументов. задается в функции, которая требует числовых аргументов. Автоматическое преобразование символа в число
90 90 Автоматическое преобразование использует вводной формат w.d, где w – ширина преобразуемого символьного значения использует вводной формат w.d, где w – ширина преобразуемого символьного значения вырабатывает пропущенное числовое значение из любой символьной величины, которая не соответствует стандартной числовой записи (цифры с разделителем тысячных значений или с обозначением степени). вырабатывает пропущенное числовое значение из любой символьной величины, которая не соответствует стандартной числовой записи (цифры с разделителем тысячных значений или с обозначением степени). Автоматическое преобразование символа в число
91 91 Автоматическое преобразование Символьное значение E , Числовое значение Автоматическое преобразование символа в число
92 92 Функция INPUT Функция INPUT используется для того, чтобы преобразовать символьные значения в числовые. Функция INPUT возвращает значение, созданное при чтении source (символьная переменная) с помощью informat (формат ввода). NumVar=INPUT(source,informat);
93 93 Функция INPUT data conversion; CVar1='32000'; CVar2='32,000'; CVar3='03may2008'; CVar4='050308'; NVar1=input(CVar1,5.); NVar2=input(CVar2,comma6.); NVar3=input(CVar3,date9.); NVar4=input(CVar4,mmddyy6.); run; proc contents data=conversion; run;
94 Alphabetic List of Variables and Attributes----- # Variable Type Len Pos ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 1 CVar1 Char CVar2 Char CVar3 Char CVar4 Char NVar1 Num NVar2 Num NVar3 Num NVar4 Num 8 24 Функция INPUT PROC CONTENTS Output
95 95 CVar1 CVar2 CVar3 CVar4 NVar ,000 03may NVar2 NVar3 NVar Функция INPUT proc print data=conversion noobs; run; PROC PRINT Output
96 96 Явное преобразование символа в число Значения переменной Grosspay в наборе данных prog2.salary2 содержат запятые. Попробуем использовать автоматическое преобразование для вычисления 10%-бонуса. prog2.salary2 ID GrossPay $11 $ , , ,000
97 97 Явное преобразование символа в число data bonuses; set prog2.salary2; Bonus=.10*GrossPay; run; proc print data=bonuses; run; ID GrossPay Bonus , , ,000. PROC PRINT Output
98 98 Явное преобразование символа в число data bonuses; set prog2.salary2; Bonus=.10*input(GrossPay,comma6.); run; proc print data=bonuses; run; ID GrossPay Bonus , , , PROC PRINT Output
99 99 Преобразование данных proc contents data=bonuses; run; Partial PROC CONTENTS Output -----Alphabetic List of Variables and Attributes----- # Variable Type Len Pos ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 3 Bonus Num GrossPay Char ID Char 11 8
100 100 GrossPay=input(GrossPay,comma6.); Преобразование данных Нельзя выполнять преобразование данных, создавая новую переменную с именем конвертируемой переменной. Такая операция присваивания не преобразует Grosspay из символьной переменной в числовую.
101 101 Преобразование данных В левой части выражения вы ожидаете получить числовую переменную Grosspay. Однако, в правой части Grosspay является символьной. Переменная – это символ или число. После того, как тип переменной назначен, он не может быть изменен. GrossPay=input(GrossPay,comma6.);
102 102 Преобразование данных Сначала, переименуйте переменную с помощью опции RENAME=. data bonuses; set prog2.salary2(rename=(GrossPay= CharGross)); run; SAS-data-set(RENAME=(old-name=new-name))
103 103 Преобразование данных Затем, используйте функцию INPUT в операторе присваивания, чтобы создать новую переменную с оригинальным именем. data bonuses; set prog2.salary2(rename=(GrossPay= CharGross)); GrossPay=input(CharGross,comma6.); run;
104 104 Преобразование данных И, наконец, используйте опцию DROP= в операторе DATA, чтобы исключить исходную (переименованную) переменную из результата. data bonuses(drop=CharGross); set prog2.salary2(rename=(GrossPay= CharGross)); GrossPay=input(CharGross,comma6.); Bonus=.10*GrossPay; run;
105 Преобразование данных PDV ID $ 4 CHARGROSS $ 6 data bonuses(drop=CharGross); set prog2.salary2(rename=(GrossPay= CharGross)); GrossPay=input(CharGross,comma6.); Bonus=.10*GrossPay; run;
106 Преобразование данных PDV ID $ 4 CHARGROSS $ 6 GROSSPAY N 8 data bonuses(drop=CharGross); set prog2.salary2(rename=(GrossPay= CharGross)); GrossPay=input(CharGross,comma6.); Bonus=.10*GrossPay; run;
107 Преобразование данных PDV ID $ 4 CHARGROSS $ 6 BONUS N 8 GROSSPAY N 8 data bonuses(drop=CharGross); set prog2.salary2(rename=(GrossPay= CharGross)); GrossPay=input(CharGross,comma6.); Bonus=.10*GrossPay; run;
108 Преобразование данных PDV ID $ 4 CHARGROSS $ 6 BONUS N 8 GROSSPAY N 8 D data bonuses(drop=CharGross); set prog2.salary2(rename=(GrossPay= CharGross)); GrossPay=input(CharGross,comma6.); Bonus=.10*GrossPay; run;
109 Преобразование данных data bonuses(drop=CharGross); set prog2.salary2(rename=(GrossPay= CharGross)); GrossPay=input(CharGross,comma6.); Bonus=.10*GrossPay; run; PDV ID $ 4 CHARGROSS $ 6 BONUS N 8 GROSSPAY N 8 D
110 110 Преобразование даты в SAS дату prog2. born Name Date $12 $7 Ruth, G. H. 13apr72 Delgado, Ed 25aug68 Overby, Phil 08jun71 data birth(drop=Date); set prog2.born; Birthday=input(Date,date7.); Age=int(yrdif(Birthday,'3may2008'd, 'ACT/ACT')); run;
111 111 Name Birthday Age Ruth, G. H Delgado, Ed Overby, Phil Преобразование даты в SAS дату proc print data=birth noobs; run; PROC PRINT Output
112 112 Автоматическое преобразование числа в символ Набор данных prog2. phones содержит числовую переменную Code (код области) и символьную переменную Telephone (номер телефона). Создайте символьную переменную, которая содержит код области в круглых скобках, за которым следует номер телефона.
113 113 prog2. phones data phonenumbers; set prog2.phones; Phone='(' !! Code !! ') ' !! Telephone; run; Code Telephone 8 $ Автоматическое преобразование числа в символ
114 114 Partial Log 13 data phonenumbers; 14 set prog2.phones; 15 Phone='(' !! Code !! ') ' !! Telephone; 16 run; NOTE: Numeric values have been converted to character values at the places given by: (Line):(Column). 15:17 NOTE: The data set WORK.PHONENUMBERS has 3 observations and 3 variables. Автоматическое преобразование числа в символ
115 115 Code Telephone Phone ( 303) ( 919) ( 301) proc print data=phonenumbers noobs; run; Автоматическое преобразование числа в символ PROC PRINT Output
116 116 SAS автоматически преобразует числовое значение в символьное, когда числовое значение используется в символьном контексте, например, назначается для ранее заданной символьной переменной назначается для ранее заданной символьной переменной применяется с оператором, который требует символьного значения, такой, как оператор объединения применяется с оператором, который требует символьного значения, такой, как оператор объединения задается в функции, которая требует символьных аргументов. задается в функции, которая требует символьных аргументов. Автоматическое преобразование числа в символ
117 117 Автоматическое преобразование использует формат BEST12. выравнивает результирующее символьное значение по правому полю. Автоматическое преобразование Числовое значение: 8 байт 303 Символьное значение: 12 байт лидирующих пробелов Автоматическое преобразование числа в символ
118 118 data phonenumbers; set prog2.phones; Phone='(' !! Code !! ') ' !! Telephone; run; PHONE $ 23 ( 303) лидирующих пробелов Автоматическое преобразование числа в символ
119 119 Функция PUT создает значения с определенным форматом. Функция PUT возвращает значение, созданное когда source (числовая переменная) записывается с помощью format (соответствует типу source). Функция PUT CharVar=PUT(source,format);
120 120 Функция PUT data conversion; NVar1=614; NVar2=55000; NVar3=366; CVar1=put(NVar1,3.); CVar2=put(NVar2,dollar7.); CVar3=put(NVar3,date9.); run; proc contents data=conversion varnum; run; Опция VARNUM в PROC CONTENTS выводит список переменных в порядке их логической позиции в наборе данных.
121 Variables Ordered by Position----- # Variable Type Len ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 1 NVar1 Num 8 2 NVar2 Num 8 3 NVar3 Num 8 4 CVar1 Char 3 5 CVar2 Char 7 6 CVar3 Char 9 Функция PUT PROC CONTENTS Output
122 122 NVar1 NVar2 NVar3 CVar1 CVar2 CVar $55,000 01JAN1961 Функция PUT proc print data=conversion noobs; run; PROC PRINT Output
123 data phonenumbers; 21 set prog2.phone; 22 Phone='(' !! put(Code,3.) !! ') ' !! Telephone; 23 run; NOTE: The data set WORK.PHONENUMBERS has 3 observations and 3 variables. Явное преобразование числа в символ data phonenumbers; set prog2.phones; Phone='(' !! put(Code,3.) !! ') ' !! Telephone; run; Partial Log
124 124 Code Telephone Phone (303) (919) (301) proc print data=phonenumbers noobs; run; Явное преобразование числа в символ PROC PRINT Output
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.