我有一个索赔数据集,我想将其拆分为 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;