sas中的格式和信息
format and informat in sas
我有以下数据:
data d;
input date1 $ date2 $;
cards;
5oct10 11nov11
6jul12 12oct13
1jan08 4may10
4may04 8jul06
1mar07 5aug07
18may04 1oug09
7aug05 8jul09
1feb03 5apr06
3feb01 15jul08
4apr07 16apr07
run;
*我需要在 date7.informat 中阅读此内容,然后在 date9.format 中呈现数据。
*我如何读取宽度格式的数据,以及如何在我的汽车不是完全数字的情况下将日期的宽度从 7 转换为 9?
当尝试这样的事情时:
proc print data=d;
format date1 date2 date9.;;
run;
它失败了,因为我在 none-完全数字变量
上使用了数字格式
修改您的数据步骤,以便:
input date1 date7. date2 date7.;
如果您使用 date1 $
来读取日期线,您得到的数据集将具有 date1 = '5oct10','6jul12' and so on
的值。但是,当您在 proc print
应用格式 date9.
时,您需要提供一个 SAS 时间值。请注意,SAS 以其自己的格式读取时间值,即从 01/Jan/1960 开始计数。您可以通过 运行 语句 `put "today is today()" 在您的 SAS 中尝试。
并且您的 proc print 语句在修改后应该可以正常工作。
而且,出于某些原因,您想以自己的格式读取 date1 和 date2 的值,即 5oct10
,恐怕您可能需要将值日、月和年分开分别(例如通过 scan
函数)并使用函数 MDY( month, day, year)
将其转换为 SAS 时间值。 date7.
at proc print
语句的格式语句在这种情况下也适用。
data d;
input date1 date7. date2 date7.;
format date1 date9. date2 date9.;
cards;
5oct10 11nov11
6jul12 12oct13
1jan08 4may10
4may04 8jul06
1mar07 5aug07
18may04 1oug09
7aug05 8jul09
1feb03 5apr06
3feb01 15jul08
4apr07 16apr07
;
run;
如果您使用 INFORMAT 语句告诉 SAS 如何读取变量,那么您不需要在 INPUT 语句中列出格式。变量的 INFORMAT 和 FORMAT 不需要相同,但在这种情况下它们可以相同,因为 DATE9 信息格式将识别只有两位数年份的值。
informat date1 date2 date9.;
format date1 date2 date9.;
input date1 date2 ;
我有以下数据:
data d;
input date1 $ date2 $;
cards;
5oct10 11nov11
6jul12 12oct13
1jan08 4may10
4may04 8jul06
1mar07 5aug07
18may04 1oug09
7aug05 8jul09
1feb03 5apr06
3feb01 15jul08
4apr07 16apr07
run;
*我需要在 date7.informat 中阅读此内容,然后在 date9.format 中呈现数据。
*我如何读取宽度格式的数据,以及如何在我的汽车不是完全数字的情况下将日期的宽度从 7 转换为 9?
当尝试这样的事情时:
proc print data=d;
format date1 date2 date9.;;
run;
它失败了,因为我在 none-完全数字变量
上使用了数字格式修改您的数据步骤,以便:
input date1 date7. date2 date7.;
如果您使用 date1 $
来读取日期线,您得到的数据集将具有 date1 = '5oct10','6jul12' and so on
的值。但是,当您在 proc print
应用格式 date9.
时,您需要提供一个 SAS 时间值。请注意,SAS 以其自己的格式读取时间值,即从 01/Jan/1960 开始计数。您可以通过 运行 语句 `put "today is today()" 在您的 SAS 中尝试。
并且您的 proc print 语句在修改后应该可以正常工作。
而且,出于某些原因,您想以自己的格式读取 date1 和 date2 的值,即 5oct10
,恐怕您可能需要将值日、月和年分开分别(例如通过 scan
函数)并使用函数 MDY( month, day, year)
将其转换为 SAS 时间值。 date7.
at proc print
语句的格式语句在这种情况下也适用。
data d;
input date1 date7. date2 date7.;
format date1 date9. date2 date9.;
cards;
5oct10 11nov11
6jul12 12oct13
1jan08 4may10
4may04 8jul06
1mar07 5aug07
18may04 1oug09
7aug05 8jul09
1feb03 5apr06
3feb01 15jul08
4apr07 16apr07
;
run;
如果您使用 INFORMAT 语句告诉 SAS 如何读取变量,那么您不需要在 INPUT 语句中列出格式。变量的 INFORMAT 和 FORMAT 不需要相同,但在这种情况下它们可以相同,因为 DATE9 信息格式将识别只有两位数年份的值。
informat date1 date2 date9.;
format date1 date2 date9.;
input date1 date2 ;