Sql 按组检查它们是否符合列表,如果不符合,则创建缺少值的新行
我想按组检查它们是否符合列表,如果不符合,则创建一个包含所有缺少值的新行。如果您不知道SAS,但知道SQL Python或R,请告诉我。它可以给我一个主意 例如 如果country不是全部('table','chair'),则创建缺少值的新行Sql 按组检查它们是否符合列表,如果不符合,则创建缺少值的新行,sql,sas,Sql,Sas,我想按组检查它们是否符合列表,如果不符合,则创建一个包含所有缺少值的新行。如果您不知道SAS,但知道SQL Python或R,请告诉我。它可以给我一个主意 例如 如果country不是全部('table','chair'),则创建缺少值的新行 COUNTRY OBJECT U.S table U.S. chair France chair France table 谢谢,您可以使用交叉连接: select c.country, o.object from (
COUNTRY OBJECT
U.S table
U.S. chair
France chair
France table
谢谢,您可以使用
交叉连接
:
select c.country, o.object
from (select distinct country from t) c cross join
(select distinct object from t) o;
您可以使用交叉联接:
select c.country, o.object
from (select distinct country from t) c cross join
(select distinct object from t) o;
如果所有值都在表中,那么PROC FREQ中的稀疏是一个很好的小技巧。它本质上强制所有可能值之间的交叉连接。如果表中的某个地方没有所有值,则需要不同的方法,通常是PrelofMT选项
proc freq data=have;
table country*object / sparse list out=want;
run;
proc print data=want;
run;
如果所有值都在表中,那么PROC FREQ中的稀疏是一个很好的小技巧。它本质上强制所有可能值之间的交叉连接。如果表中的某个地方没有所有值,则需要不同的方法,通常是PrelofMT选项
proc freq data=have;
table country*object / sparse list out=want;
run;
proc print data=want;
run;
一个独特的SAS选项是将
PROC FREQ
与SPARSE
一起使用。下面是您要问的问题:
data have;
input COUNTRY $ OBJECT $;
datalines;
U.S. table
U.S. chair
France chair
;;;;
run;
proc freq data=have;
tables country*object/sparse out=want(keep=country object);
run;
然而,它不一定适用于其他变量;您必须将其合并到主数据集(或左连接或其他)以获取其他变量的数据。一个独特的SAS选项是使用
PROC FREQ
和SPARSE
。下面是您要问的问题:
data have;
input COUNTRY $ OBJECT $;
datalines;
U.S. table
U.S. chair
France chair
;;;;
run;
proc freq data=have;
tables country*object/sparse out=want(keep=country object);
run;
然而,它不一定适用于其他变量;您必须将其合并到主数据集(或左连接或其他)以获取其他变量的数据