У меня есть набор данных, переменные которого представляют собой два вида информации: переменное измерение и категорию.SAS: отдельные переменные измерения Condense в категории
Например, Var1A
измеряет первую переменную (например, кровяное давление) категории A (например, мужской/женский), тогда как Var2B
измеряет вторую переменную (например, сердечный ритм) категории B (например, мужчина/женщина) ,
Key Var1A Var2A Var1B Var2B
--- ----- ----- ----- -----
002 1 2 3 4
031 5 6 7 8
028 9 10 11 12
Мне нужна каждая переменная измерения для уплотнения по типу категории.
Key Type Var1 Var2
--- ---- ---- ----
002 A 1 2
002 B 3 4
028 A 9 10
028 B 11 12
031 A 5 6
031 B 7 8
Сортировка сжатого набора данных для меня не имеет значения.
То, что я придумал, и дает наборы данных, указанные выше. Я в основном грубо вынуждал/искажал свой путь к этому решению. Однако я задаюсь вопросом, существует ли более прямой/интуитивно понятный способ сделать это, возможно, без необходимости сортировать сначала и отбрасывать так много переменных.
data have;
input key $ @@ Var1A Var2A Var1B Var2B;
datalines;
002 1 2 3 4
031 5 6 7 8
028 9 10 11 12
;
run;
proc sort data = have out = step1_sort;
by key;
run;
proc transpose data = step1_sort out = step2_transpose;
by key;
run;
data step3_assign_type_and_variable (drop = _NAME_);
set step2_transpose ;
if _NAME_ = 'Var1A' then do;
variable = 'Var1';
type = 'A';
end;
else if _NAME_ = 'Var1B' then do;
variable = 'Var1';
type = 'B';
end;
else if _NAME_ = 'Var2A' then do;
variable = 'Var2';
type = 'A';
end;
else if _NAME_ = 'Var2B' then do;
variable = 'Var2';
type = 'B';
end;
run;
proc transpose data = step3_assign_type_and_variable
out = step4_get_want (drop = _NAME_);
var col1;
by key type;
id variable;
run;