如何在SAS中输入具有数字名称的变量?
我想以数字形式输入变量名称,例如“1950-1959”,我使用的是INPUT语句,但输出显示不正确如何在SAS中输入具有数字名称的变量?,sas,Sas,我想以数字形式输入变量名称,例如“1950-1959”,我使用的是INPUT语句,但输出显示不正确 DATA data1; INPUT AgeGroup$ 1950-1959 1960-1969 1970-1979 1980-1989 1990-1992 Total; DATALINES; 20-29 1919 1808 1990 2175 154 8046 30-39 2616 4585 6580 6843 1921 22545 40-49 705 2661 5027 6
DATA data1;
INPUT AgeGroup$ 1950-1959 1960-1969 1970-1979 1980-1989 1990-1992 Total;
DATALINES;
20-29 1919 1808 1990 2175 154 8046
30-39 2616 4585 6580 6843 1921 22545
40-49 705 2661 5027 6597 1812 16802
50-59 38 680 2562 4836 2127 10243
60-69 0 35 606 2314 831 3786
70-79 0 0 23 467 494 984
80-89 0 0 0 12 31 43
Total 5278 9769 16788 23244 7370 62449
;
RUN;
您能告诉我是否需要使用任何特殊字符来指定“1950-1959”等是数值变量的名称吗
谢谢 使用
选项validvarname=any启用扩展字符名,然后将每个字符名指定为名称文字,如'this'n
:
options validvarname=any;
DATA data1;
INPUT AgeGroup$ '1950-1959'n '1960-1969'n '1970-1979'n '1980-1989'n '1990-1992'n Total;
DATALINES;
20-29 1919 1808 1990 2175 154 8046
30-39 2616 4585 6580 6843 1921 22545
40-49 705 2661 5027 6597 1812 16802
50-59 38 680 2562 4836 2127 10243
60-69 0 35 606 2314 831 3786
70-79 0 0 23 467 494 984
80-89 0 0 0 12 31 43
Total 5278 9769 16788 23244 7370 62449
;
RUN;
大多数现代SAS应用程序都会自动指定此选项,但有时您会遇到仍有v7名称的系统。您可以使用名称文字来指定不符合正常规则的名称,例如'1950-1959'n
。确保VALIDVARNAME选项设置为ANY,以便SAS允许使用非标准名称。您可以为变量使用标准名称,并使用标签存储该描述
input AgeGroup :$5. period1-period6 ;
label period1 = '1950-1959' period2 = '1960-1969' ....
将时间段存储到变量中可能更有用
data data1;
length AgeGroup $5 Period $9 count 8;
input AgeGroup @;
do period='1950-1959','1960-1969','1970-1979','1980-1989','1990-1992','Total';
input count @;
output;
end;
datalines;
20-29 1919 1808 1990 2175 154 8046
30-39 2616 4585 6580 6843 1921 22545
40-49 705 2661 5027 6597 1812 16802
50-59 38 680 2562 4836 2127 10243
60-69 0 35 606 2314 831 3786
70-79 0 0 23 467 494 984
80-89 0 0 0 12 31 43
Total 5278 9769 16788 23244 7370 62449
;
在这种结构中,您可以更轻松地筛选时间段子集的数据。但是,您仍然可以轻松地创建一个报告,在该表格布局中显示数据
proc report data=data1;
columns agegroup count,period ;
define agegroup / group ;
define period / across ' ';
define count / ' ';
run;
结果:
AgeGr
oup 1950-1959 1960-1969 1970-1979 1980-1989 1990-1992 Total
20-29 1919 1808 1990 2175 154 8046
30-39 2616 4585 6580 6843 1921 22545
40-49 705 2661 5027 6597 1812 16802
50-59 38 680 2562 4836 2127 10243
60-69 0 35 606 2314 831 3786
70-79 0 0 23 467 494 984
80-89 0 0 0 12 31 43
Total 5278 9769 16788 23244 7370 62449
为什么不使用该文本作为变量的标签而不是名称?或者,为什么不创建一个更垂直的数据结构,其中年份信息存储在变量的值中,而不是元数据(变量名称或标签)?@CC25,一旦你进行分类(将时间段存储到变量中更有用),你就不会返回了!