首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从SAS数据集中提取“动态”部件

从SAS数据集中提取“动态”部件
EN

Stack Overflow用户
提问于 2014-10-16 05:46:54
回答 1查看 105关注 0票数 0

我不确定这是否可能(或愚蠢的问题),因为我刚刚开始研究SAS上周。我已经成功地将我的.CSV文件导入到一个SAS数据集,使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
proc import

指定guessingrows=以限制我的out=

我现在的问题是,我要导入的CSV文件的结构不一样,在编写了一些使用obsnum=指定开始和要读取的x行的代码后,我注意到了这一点。

那么,我的问题是,SAS是否能够查找特定的字符串/空变量,并用作结束观察?

我的数据看起来像(但是每个文件的Var_x数不同):

首先,我试着查看slice=,但是只有当我知道确切的感兴趣的地方时,才会有用,因为组之间的空空间可能会有所不同。

是否可以使用set函数指定从第1行开始并读取到包含空白字段?或者你能把我重新引导到某种功能(我找不到自己)?

我想看看每一个“块”分别和处理。

提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-17 09:40:07

我认为,如果您在输入了所有数据之后能够轻松地进行一些处理,那么您可以以一种相对简单的方式完成这一任务。

因此,不加限制地对整个数据集进行proc导入。

然后根据需要使用数据步骤和计数器处理数据和输出。类似于:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data output1 output2 output3;
     set imported_data;
     if _n_ = 1 then counter = 1;
     var1lag = lag(var1);
     if var1 = '' and var1lag ne '' then counter=counter+1;
     if counter = 1 then output output1;
     else if counter = 2 then output output2;
     else output output3;
run;

data output1;
     set output1;
     if var1 = '' and var2 = . and var3 = . then delete;
run;
data output2;
     set output2;
     if var1 = '' and var2 = . and var3 = . then delete;
run;
data output3;
     set output3;
     if var1 = '' and var2 = . and var3 = . then delete;
run;

以上代码根据计数器的值向三个数据集输出。延迟函数允许我们查找一行,以确保我们第一次没有看到任何数据,并在没有看到数据的情况下更新计数器。

然后,我们返回并删除数据集的任何完全空白数据。

如果您有许多输出而不是if / data语句来输出数据,那么您可以很容易地使用一些数组来使这个工作更可伸缩。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26406085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文