У меня есть следующие данные:
data df;
input id $ d1 d2 d3;
datalines;
a . 2 3
b . . .
c 1 . 3
d . . .
;
run;
Я хочу применить некоторые преобразования / операции к подмножеству столбцов. В этом случае это означает удаление всех строк, в которых столбцы с префиксом d
равны all отсутствует / null.
Вот один из способов, которым я достиг этого, получив сильное влияние от этого SO сообщения .
Сначала суммируйте все числовые столбцы по строкам.
data df_total;
set df;
total = sum(of _numeric_);
run;
Затем удалите все строки, в которых отсутствует total
/ null.
data df_final;
set df_total;
where total is not missing;
run;
Что дает мне вывод, который я хотел:
a . 2 3
c 1 . 3
Моя проблема, однако, заключается в том, что этот подход предполагает, что существует только один столбец «первичного ключа» (в данном случае id
), а все остальное является числовым и должно рассматриваться как часть этой логики sum(of _numeric_) is not missing
.
На самом деле, у меня есть множество других столбцов в исходном наборе данных, df
, и просто невозможно drop
всех их записать. Я знаю, что столбцы, для которых я хочу выполнить этот «тест», имеют префикс d
(а точнее, соответствие шаблону d<mm><dd>
).
Как я могу расширить этот подход для определенного подмножества столбцов?