Как разбить набор данных SAS с установленным количеством строк в набор данных sas / или файл TXT? - PullRequest
0 голосов
/ 02 октября 2019

У меня есть набор данных заявки, который я хочу разделить на файлы 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

1 Ответ

0 голосов
/ 02 октября 2019

Используйте параметр 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:\temp\claims_pair#', claimgroup/2);
  end;

  file pairs filevar=filename dlm=','; 

  put tin claimid item value;
run;
...