代替在SAS sql查询中,是否在列中指定适当的值?

代替在SAS sql查询中,是否在列中指定适当的值?,sas,Sas,我有一个数据,其中a列包含以下数据 Column A -------- 1 2 ? 2 我使用了以下查询: proc sql; select if A= '?' then A=., count(*) as N_obs from freq_sex_Partner group by Number_of_sexual_partners; quit; 这是行不通的。请建议我如何更换新的?对于任何标准值?在SQL中,它是一个CASE语句,而不是IF/THEN proc sql; select c

我有一个数据,其中a列包含以下数据

Column A
--------
1
2
?
2
我使用了以下查询:

proc sql;
select 
if A= '?' then A=., count(*) as N_obs 
from freq_sex_Partner
group by Number_of_sexual_partners;
quit;

这是行不通的。请建议我如何更换新的?对于任何标准值?

在SQL中,它是一个CASE语句,而不是IF/THEN

proc sql;
select 
case when a='?' then . 
else a end as a, count(*) as N_obs 
from freq_sex_Partner
group by Number_of_sexual_partners;
quit;
或者也可以使用IFC()函数

proc sql;
select 
ifc(a='?', ., a) as a, count(*) as N_obs 
from freq_sex_Partner
group by Number_of_sexual_partners;
quit;

在SQL中,它是一个CASE语句,而不是IF/THEN

proc sql;
select 
case when a='?' then . 
else a end as a, count(*) as N_obs 
from freq_sex_Partner
group by Number_of_sexual_partners;
quit;
或者也可以使用IFC()函数

proc sql;
select 
ifc(a='?', ., a) as a, count(*) as N_obs 
from freq_sex_Partner
group by Number_of_sexual_partners;
quit;
列A包含
“?”
,因此它是字符值。@reeza代码应该是
然后是“
ifc(a=”?“,”,a)
。此外,如果不同时选择分组变量,
N_obs
的上下文将丢失

暗示

data have;
input a $ nsp ;
datalines;
1 2
2 3
? 7
2 7
run;

proc sql;
  select
    nsp
  , case when a='?' then '' else a end as a
  , count(*) as nsp_count
  from have
  group by nsp
  ;
quit;
查询还将记录消息
注意:查询需要将摘要统计信息与原始数据重新合并。
因为Proc SQL正在使用组中的单个行自动重新合并组聚合。

列A包含
“?”
,因此它是字符值。@reeza代码应该是
然后是“
ifc(a=”?“,”,a)
。此外,如果不同时选择分组变量,
N_obs
的上下文将丢失

暗示

data have;
input a $ nsp ;
datalines;
1 2
2 3
? 7
2 7
run;

proc sql;
  select
    nsp
  , case when a='?' then '' else a end as a
  , count(*) as nsp_count
  from have
  group by nsp
  ;
quit;

查询还将记录消息
注意:查询需要将摘要统计信息与原始数据重新合并。
因为Proc SQL正在使用组中的单个行自动重新合并组聚合。

我将代码重新排列为:Proc SQL;选择性伴侣的数量,如果性伴侣的数量=“?”然后“.”则选择“性伴侣的数量”。否则性伴侣的数量以性伴侣的数量结尾,按性伴侣的数量从频率性伴侣组中计算(*)作为nsp计数;退出代码给出了以下错误:错误:使用equals(=)的表达式具有不同数据类型的组件。错误:WHEN子句2的结果与前面的结果的数据类型不同。我如何解决该问题?对我来说,这表明nsp是数字的,并且可能已经有一种自定义格式,导致丢失的数字显示为
,如果是这样,您可能不需要执行任何其他操作。您能否显示来自
Proc CONTENTS data=freq\u sex\u partner
的输出?我将代码重新排列为:Proc sql;选择性伴侣的数量,如果性伴侣的数量=“?”然后“.”则选择“性伴侣的数量”。否则性伴侣的数量以性伴侣的数量结尾,按性伴侣的数量从频率性伴侣组中计算(*)作为nsp计数;退出代码给出了以下错误:错误:使用equals(=)的表达式具有不同数据类型的组件。错误:WHEN子句2的结果与前面的结果的数据类型不同。我如何解决该问题?对我来说,这表明nsp是数字的,并且可能已经有一种自定义格式,导致丢失的数字显示为
,如果是这样,您可能不需要执行任何其他操作。您能否显示来自
Proc CONTENTS data=freq\u sex\u partner
的输出?