разные переменные с одинаковыми именами в наборе данных sas - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть текстовый файл, в котором два разных столбца имеют одинаковые имена. Как показано на следующем рисунке. enter image description here

Допустим, для SystBP мне нужно изменить первый SystBP на SystBP_B, а второй SystBP на SystBP_E.

Может ли кто-нибудь любезно предложить мне помощь по этому вопросу?

Ответы [ 3 ]

1 голос
/ 18 апреля 2020

Я бы включил время в наблюдения.

data test;
   infile cards4 firstobs=2;
   input id :$8. week @;
   do time = 'STR','END';
      input SystBP  DiastBP   Pulse   Stress @;
      output;
      end;
   cards;
ID Week  SystBP  DiastBP   Pulse   Stress   SystBP  DiastBP   Pulse   Stress
1   1      134       44      66      5.8      134       44      66      5.8
;;;;
   run;
1 голос
/ 18 апреля 2020

При программировании в SAS Base Не следует ожидать, что SAS будет считывать имена столбцов из текстового файла и интерпретировать их как имена переменных.

Вы должны указать SAS, что такое первая строка данных, где записываются значения и как их следует интерпретировать (текст, число, дата, ...). Это делается с помощью infile и input оператор в шаге данных.

Когда вы пишете код самостоятельно, вы получаете полный контроль.

data READ_FROM_TXT;
    infile "C:\myFolder\myFile.txt" firstobs=3 truncover; 
        * firstobs=3 makes SAS skip the first 2 observations;
        * truncover avoids jumping to the next line when the last variable is missing or too short ;
    input 
        @01 ID         2.
        @05 Week       4.
        @11 SystBP_B   6.
        @19 DiastBP_B  6.
        ...
        @41 SystBP_E   6.
        @49 DiastBP_E  6.
        ...
        ;
        * @11 SystBP_B   6. instructs SAS to interpret positions 11 to 16 as a number 
        * and assign the value to variable SystBP_B;
run;

Когда вы вставляете данные в виде изображения, а не в виде текста, используя Разметка, я должен был угадать позиции, поэтому вам придется их исправить.

0 голосов
/ 18 апреля 2020

Опция INFILE FIRSTOBS= позволит вам INPUT данные, начиная со строки 3.

Файл данных: C:\temp\bp-survey.txt

         Start                               End
ID Week  SystBP  DiastBP   Pulse   Stress   SystBP  DiastBP   Pulse   Stress
1   1      134       44      66      5.8      134       44      66      5.8
...

Программа

filename  survey 'c:\temp\bp-survey.txt';

data want;
  infile survey firstobs=3;
  input 
    ID Week
    SystBP_start DiastBP_start Pulse_start Stress_start
    SystBP_end   DiastBP_end   Pulse_end   Stress_end
  ;
run;

ods html ;
proc print data=want;
run;
...