首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找数据排序的逻辑

查找数据排序的逻辑
EN

Stack Overflow用户
提问于 2018-05-01 13:59:40
回答 3查看 52关注 0票数 0

我是SAS的初学者,我有一些时间表

代码语言:javascript
复制
VIT_A 12 23 22 0 32 0 11
VIT_C 10 9 0 21 0 26 76

如果我只想列出VIT_A ^=0VIT_C^=0的数据,那么逻辑是什么?

结果将是

代码语言:javascript
复制
VIT_A 12 23 22 32 11
VIT_C 10 9 21 26 76
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-02 10:44:23

如果您的数据看起来像这个表1

代码语言:javascript
复制
    COL1    COL2
1   VIT_A   VIT_C
2   12     10
3   23     9
4   22     0

您只需要使用一个where子句

如果您的数据看起来像这个表2

代码语言:javascript
复制
    COL1                  COL2
1   VIT_A                 VIT_C
2   12 23 22 0 32 0 11    10 9 0 21 0 26 76

然后可以使用tranwrd函数将' '替换为',',然后将'0'替换为''

1的解决方案

数据:

代码语言:javascript
复制
data have;
input VIT_A  VIT_C;
datalines;
12 10
23 9
22 0
0 21
3 20
0 26
11 76
;
run;

创建两个没有任何0值的新表,并在obs中添加行号

代码语言:javascript
复制
proc sql;
create table VIT_A as
select monotonic() as obs , VIT_A from have where VIT_A ne 0 ; 
create table VIT_C as
select monotonic() as obs ,VIT_C from have where VIT_C ne 0;
quit;

合并这两个表:

代码语言:javascript
复制
data want;
merge VIT_A VIT_C;
by obs;
run;

输出:

代码语言:javascript
复制
 obs=1 VIT_A=12 VIT_C=10 
 obs=2 VIT_A=23 VIT_C=9 
 obs=3 VIT_A=22 VIT_C=21 
 obs=4 VIT_A=3 VIT_C=20 
 obs=5 VIT_A=11 VIT_C=26 
 obs=6 VIT_A=. VIT_C=76

票数 1
EN

Stack Overflow用户

发布于 2018-05-01 15:36:36

您可以转换数据,然后选择none 0值到宏变量中。

假设值在列中,而不是行中:

代码语言:javascript
复制
data have;
length string $100. ;
format string $100. ;
input string $ v1 v2 v3 v4 v5 v6 v7;
datalines;
VIT_A 12 23 22 0 32 0 11
VIT_C 10 9 0 21 0 26 76 
;
run;
proc transpose data=have out=trans name=value;
by string;
run;
proc sql noprint ;
select COL1 into :VIT_A separated by ' '  from trans where string="VIT_A" and COL1 <> 0;
select COL1 into :VIT_C separated by ' ' from trans where string="VIT_C" and COL1 <> 0;
quit;

Data Want;
string='VIT_A';
Values="&VIT_A.";
output;
string='VIT_C';
Values="&VIT_C.";
output;
run;

输出:

代码语言:javascript
复制
string=VIT_A Values=12 23 22 32 11
string=VIT_C Values=10 9 21 26 76
票数 0
EN

Stack Overflow用户

发布于 2018-05-02 15:10:48

用WHERE语句?

代码语言:javascript
复制
proc print data=have ;
  where vit_a ne 0 ;
run;

如果要测试多个变量,请确保将它们与正确的逻辑组合在一起。

代码语言:javascript
复制
where vit_a ne 0 AND vit_c ne 0;

是不同于

代码语言:javascript
复制
where vit_a ne 0 OR vit_c ne 0;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50117860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档