If statement 如何修改数据,然后在PROC FREQ(sas)中使用它?

If statement 如何修改数据,然后在PROC FREQ(sas)中使用它?,if-statement,substring,sas,frequency,proc,If Statement,Substring,Sas,Frequency,Proc,我使用PROC FREQ对所有指定的组进行计数。我不确定我的代码是否正确进入PROC FREQ。我使用了数据,但列表看起来很混乱。我创建的目的是将所有信息分类到适当的名称组中,但是PROC FREQ的结果看起来是空的,但是缺少标题和提及的频率=1。 显然,我没有正确地编写这段代码 Proc Freq没有任何修改(但看起来很凌乱): 修改数据。。。这是我的密码: PROC SORT data=Speechdata; by Dialect;run; Data Speechdata2; set= Sp

我使用PROC FREQ对所有指定的组进行计数。我不确定我的代码是否正确进入PROC FREQ。我使用了数据,但列表看起来很混乱。我创建的目的是将所有信息分类到适当的名称组中,但是PROC FREQ的结果看起来是空的,但是缺少标题和提及的频率=1。 显然,我没有正确地编写这段代码

Proc Freq没有任何修改(但看起来很凌乱):

修改数据。。。这是我的密码:

PROC SORT data=Speechdata; by Dialect;run;
Data Speechdata2;
set= Speechdata;
If substr(Dialet,1,2)='Cr' then Dialect = 'Creole';
    else if substr(Dialect,1,2)='Ca' then Dialect = 'Californian';
    else if substr(Dialect,1,2)='Ch' then Dialect ='Chicano';
    else if substr(Dialect,1,3)='Mid' then Dialect ='Midwest';
    else if substr(Dialect,1,1)='N' then Dialect ='New York City';
    else if substr(Dialect,1,2)='Sa' then Dialect ='Californian';
    else if substr(Dialect,1,2)='Pi' then Dialect ='Pittsburghese';
    else if substr(Dialect,1,2)='Pa' then Dialect ='Pacific Northwest';
    else if substr(Dialect,1,1)='O' then Dialect ='Other';
    else if substr(Dialect,1,1)='NA' then Dialect ='Missing';
    else Dialect ='Missing';
    run;

PROC FREQ data=Speechdata2;
table Dialect/nocum nopercent;
title 'Dialect Frequencies';
run; 

如果显示的代码与您提交的代码完全相同,那么您就有一个等号,它从一个名为“Speechdata”的未初始化变量创建了一个名为“set”的变量。日志应该说“创建了数据集SPEECHDATA2,包含1个观察值和3个变量”

删除该提取字符,您应该会没事:

Data Speechdata2;
   set Speechdata;
   /* and so on */

始终查看日志以获取有用信息。

此处有一个等号set=Speechdata

一个好的经验法则是检查你的日志

Data Speechdata2;
   set Speechdata;
   /* and so on */