У меня большой массив данных с несколькими столбцами (около 150).
Существует ряд столбцов (Dx1, Dx2 ... до Dx30), которые являются кодами диагностики (коды являются числами, но они являются категориальными переменными, которые соответствуют медицинскому диагнозу с использованием системы кодирования ICD-9).
У меня есть рабочий код для поиска в одном столбце, но мне нужно выполнить поиск во всех 30 столбцах, чтобы увидеть, содержит ли какой-либо из столбцов код в указанном диапазоне (DXrange).
Базовый датафрейм выглядит так:
Case DX1 DX2 DX3 DX4...DX30
1 123 345 567 99 12
2 234 345 NA NA NA
3 456 567 789 345 34
Вот рабочий код:
## Defines a range of codes to search for
DXrange <- factor(41000:41091, levels = levels(core$DX1))
## Search for the DXrange codes in column DX1.
core$IndexEvent <- core$DX1 %in% DXrange & substr(core$DX1, 5, 5) != 2
## What is the frequency of the IndexEvent?
cat("Frequency of IndexEvent : \n"); table(core$IndexEvent)
Рабочий код адаптирован из "Расчет различий в общенациональной базе данных прав доступа (NRD), отчет № 2017-01"
Я мог бы запустить это для каждого столбца DX и затем суммировать их для итогового итога IndexEvent, но это не очень эффективно.