如何将具有一组行数的 SAS 数据集拆分为 sas 数据集/或 TXT 文件?



我有一个索赔数据集,我想将其拆分为 TXT 文件。主要问题是单个 TXT 文件只能包含两个声明(应该写入声明的所有出现(,下一个声明应该写入另一个 txt 或数据集,即如果我在一个文件中有 10 个声明,我应该有 5 个文件/数据集作为输出。

我的数据如下所示:

Obs    Tin          Claim_Id
1    271408630    EDY03JHKK00
2    271408630    EDY03JHKK01
3    271408630    EDY03JHKK01
4    271408630    EDY03JHKK01
5    271408630    EDY03JHKK01
6    271408630    EDY03JHKK01
7    271408630    EDY03JHKK01
8    271408630    EDY03JHKK01
9    271408630    EDY03JHKK01
10    271408630    EDY03JHKK01
11    271408630    EDY03JHKK01
12    271408630    EDY03JHKK01
13    271408630    EDY03JHKK01
14    271408630    EK359VRPM00
15    271408630    EK359VRPM00
16    271408630    EK359VRPM00
17    271408630    EK359VRPM00
18    271408630    EK359VRPM00
19    271408630    EK359VRPM00
20    271408630    EK359VRPM00
21    271408630    EK359VRPM00
22    271408630    EK359VRPM00
23    271408630    EK359VRPM00
24    271408630    EK359VRPM00
25    271408630    EK359VRPM00
26    271408630    EK359VRPM00
27    271408630    EK359VRPM01
28    271408630    EK359VRPM01
29    271408630    EK359VRPM01
30    271408630    EK359VRPM01
31    271408630    EK359VRPM01
32    271408630    EK359VRPM01

在基础 sas 中尝试

> 使用FILE语句FILEVAR=选项在运行数据步骤期间更改输出文件。

假设数据集是按Claim_Id预排序的,或者在Tin内对Claim_Id进行排序。BY处理可以计算遇到的组数,并每 2 组更改一次文件名。 如果每个文本文件中的声明数为 3(或其他一些 #(而不是 2,则调整文件名构造中的模检验和除数。

data have;
do tin = 1 to 20;
do claimid = 1 to 9;
do item = 1 to ceil(20 * ranuni(123));
value = 100 + floor(50*ranuni(123));
output;
end;
end;
end;
run;
data _null_;
set have;
by tin claimid;
if first.claimid then do;
retain claimgroup 1;
claimgroup+1;
if mod(claimgroup,2) = 0 then filename = cats('c:tempclaims_pair#', claimgroup/2);
end;
file pairs filevar=filename dlm=','; 
put tin claimid item value;
run;

相关内容

  • 没有找到相关文章

最新更新