Sas 从proc freq将宏变量设置为频率计数

Sas 从proc freq将宏变量设置为频率计数,sas,Sas,是否可以创建设置为proc freq产生的频率变量的宏变量?我试图创建一个变量,该变量将等于每个姓氏在数据集中出现的次数。例如,史密斯可能出现3次,而杰克逊只出现2次。我想捕获该值并使用它。您可以在以下数据步骤中使用调用symput(将过程频率输出到具有/out=和/或使用ods输出的数据集之后),或者您可以避免使用proc freq,并通过选择进入使用proc sql执行频率,这将创建一个宏变量 proc sql; select sex, count(1) into :sex s

是否可以创建设置为proc freq产生的频率变量的宏变量?我试图创建一个变量,该变量将等于每个姓氏在数据集中出现的次数。例如,史密斯可能出现3次,而杰克逊只出现2次。我想捕获该值并使用它。

您可以在以下数据步骤中使用
调用symput
(将
过程频率
输出到具有
/out=
和/或使用
ods输出
的数据集之后),或者您可以避免使用
proc freq
,并通过
选择进入
使用
proc sql
执行频率,这将创建一个宏变量

proc sql;
  select sex, count(1) 
    into :sex separated by ' ',
         :count separated by ' '
    from sashelp.class
    group by sex;
quit;

这使得一些东西近似于一对宏变量数组(一个带有值,一个带有计数)。如果您想使用名称(或任何名称)作为宏变量名称,请使用第一个选项(后续数据步骤中的
调用symput
),因为它允许您命名宏变量。

您可以在以下数据步骤中使用
调用symput
(将
proc-freq
输出到具有
/out=
和/或使用
ods-output
的数据集后),或者您可以避免使用
proc-freq
并通过
选择into
使用
proc-sql
执行频率,这将创建一个宏变量

proc sql;
  select sex, count(1) 
    into :sex separated by ' ',
         :count separated by ' '
    from sashelp.class
    group by sex;
quit;

这使得一对宏变量数组(一个具有值,一个具有计数)近似。如果要使用名称(或任何名称)作为宏变量名称,请使用第一个选项(使用
调用symput的datastep后续操作)这样就可以命名宏变量。

您可以在以下数据步骤中使用
调用symput
(将
proc freq
输出到具有
/out=
和/或使用
ods输出的数据集之后),或者您可以避免使用
proc freq
,并通过
select into
使用
proc sql
执行频率,这将创建一个宏变量

proc sql;
  select sex, count(1) 
    into :sex separated by ' ',
         :count separated by ' '
    from sashelp.class
    group by sex;
quit;

这使得一对宏变量数组(一个具有值,一个具有计数)近似。如果要使用名称(或任何名称)作为宏变量名称,请使用第一个选项(使用
调用symput的datastep后续操作)这样就可以命名宏变量。

您可以在以下数据步骤中使用
调用symput
(将
proc freq
输出到具有
/out=
和/或使用
ods输出的数据集之后),或者您可以避免使用
proc freq
,并通过
select into
使用
proc sql
执行频率,这将创建一个宏变量

proc sql;
  select sex, count(1) 
    into :sex separated by ' ',
         :count separated by ' '
    from sashelp.class
    group by sex;
quit;

这使得一对宏变量数组(一个具有值,一个具有计数)近似。如果要使用名称(或任何名称)作为宏变量名称,请使用第一个选项(使用
调用symput的datastep后续操作)这让您可以命名宏变量。

有点离题,但是,我以前没有看到使用的符号
count(1)
,这让我想知道它和
count(*)之间是否有区别。我想没有:。@RobertPenridge我相信它是特定于实现的;我认为在SAS中类似于SQL Server(没有区别)。许多Oracle DBA都告诉我,在Oracle中,它确实会提高执行速度。因为Oracle是我第一次真正学习SQL的地方,这一点一直困扰着我。(显然,它在Oracle中不再起作用,但自从我几年前从多年前学习SQL的人那里学到它以来……)老实说,我可能应该停止使用count(1),因为此时它基本上是在传播一个城市神话,但因为每个人都知道老程序员从不改变他们的技巧…稍微偏离主题,但是,我没有看到以前使用的符号
count(1)
,这让我想知道它和
count(*)之间是否有区别
。我想不是:。@RobertPenridge,我相信它是特定于实现的;我认为在SAS中类似于SQL Server(没有区别)。许多Oracle DBA告诉我,在Oracle中,它确实会提高执行速度。由于Oracle是我第一次真正学习SQL的地方,这一点一直困扰着我。(显然,它在甲骨文中不再有作用,但由于我是在几年前从多年前学习过它的人那里学到的……)老实说,我可能应该停止使用count(1)因为在这一点上它基本上是在传播一个城市神话,但是因为每个人都知道老程序员从不改变他们的技巧…有点离题,但是,我没有看到以前使用的符号
count(1)
,这让我想知道这和
count(*)之间是否有区别
。我想不是:。@RobertPenridge,我相信它是特定于实现的;我认为在SAS中类似于SQL Server(没有区别)。许多Oracle DBA告诉我,在Oracle中,它确实会提高执行速度。由于Oracle是我第一次真正学习SQL的地方,这一点一直困扰着我。(显然,它在甲骨文中不再有作用,但由于我是在几年前从多年前学习过它的人那里学到的……)老实说,我可能应该停止使用count(1)因为在这一点上它基本上是在传播一个城市神话,但是因为每个人都知道老程序员从不改变他们的技巧…有点离题,但是,我没有看到以前使用的符号
count(1)
,这让我想知道这和
count(*)之间是否有区别
。我想不是:。@RobertPenridge,我相信它是特定于实现的;我认为在SAS中类似于SQL Server(没有区别)。许多Oracle DBA告诉我,在Oracle中,它确实会提高执行速度。由于Oracle是我第一次真正学习SQL的地方,这一点一直困扰着我。(很明显,这在甲骨文中已经没有作用了,但自从我在几年前从p
proc sql;
  select sex, count(1) 
    into :sex separated by ' ',
         :count separated by ' '
    from sashelp.class
    group by sex;
quit;