我如何修改数据然后在PROC FREQ中使用它(对于sas)?

时间:2013-10-05 22:04:02

标签: if-statement substring sas frequency proc

我使用PROC FREQ来计算所有指定的组。我不确定我的代码是否正确进入PROC FREQ。我使用了数据,但列表看起来很乱。我创建了将所有信息分类到适当的名称组,但PROC FREQ的结果看起来是空的,但保留标题并提到频率缺失= 1。 显然,我没有正确执行此代码。

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

American Dialect Frequency

? 1
Creole 256
Craole 1
Californian 603
Chicano 302
Chiano 2
Chiaco 1
Midwest 423
Missing
New York City 409
NYC 35
Other 90
Pacific Northwest 128
Pittsburghese 15
Pittsburhese 2
San Francisco 78
Won't say 12

修改数据......这是我的代码:

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; 

2 个答案:

答案 0 :(得分:1)

如果显示的代码与您提交的内容完全相同,则会有一个杂散等号,从名为“Speechdata”的未初始化变量创建名为“set”的变量。日志应该说“创建数据集SPEECHDATA2,带有1个观察值和3个变量”。

删除该提取字符,你应该没问题:

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

请务必查看日志中的有用信息。

答案 1 :(得分:0)

此处有一个等号 set = Speechdata

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