PROC FREQ是否有办法收集名字第一个字母的频率?例如,我在变量Name下有一个包含50个名称的列表。我想用名字的第一个字母取名字的频率。我做了这个创建一个新的变量,它采用原始名称变量的子串,并且它工作正常。但我想知道PROC FREQ中是否有一种方法可以在不创建新变量的情况下完成这项工作?这是我用过的代码:
DATA FirstNames;
INFILE "(insert file)" firstobs=2;
INPUT Name $ @@;
Letter=substr(Name,1,1);
RUN;
proc freq data = FirstNames;
Tables Letter;
run;
答案 0 :(得分:4)
将长度为1的格式应用于变量。
proc freq data = FirstNames;
Tables Name;
Format Name $1.;
run;
答案 1 :(得分:1)
使用proc sql
:
proc sql:
select substr(name, 1, 1) as firstLetter, count(*)
from FirstNames
group by substr(name, 1, 1);