Следуя из предыдущей задачи: R - return boolean if any strings in a vector appear in any of several columnsR - Подсчитайте, сколько раз подобные строки появляются в нескольких колонках
Я не думаю, что мне нужно было подсчитать количество подобных строк из моего вектора, которые появляются в моем кадре данных , но, оказывается, это полезная информация. D'о!
Проблема: У меня есть большой кадр данных, из которых столбцы с 5 по 24 являются кодами диагностики. Каждая строка - индивидуальный вход в больницу. Вектор risk_codes содержит укороченные коды диагностики. Я искал новый столбец для фрейма данных, который сказал мне, если в 20 кодах диагностики появились какие-либо факторы риска. Уловка заключалась в том, что мне нужен был частичный матч, а не полный матч.
Col1 Col2 Col3 Col4 Diag_1 Diag_2 Diag_3 ... Diag_20
data data data data J123 F456 H789 E468
data data data data T452 NA NA NA
код, чтобы сделать это:
df$newcol <- apply(df,1,function(x) any(sapply(risk_codes, function(codes) grepl(codes,x[c(5:24)]))))
df$newcol <- ifelse(df$newcol,1,0)
Это успешно возвращает 1 в новом столбец, если какое-либо risk_codes совпадает диагностики кодов допуска в.
risk_codes <- c("J1","F45","H987")
Col1 Col2 Col3 Col4 Diag_1 Diag_2 Diag_3 ... Diag_20 newcol
data data data data J123 F456 H789 E468 1
data data data data T452 NA NA NA 0
Дополнительное осложнение: Теперь я хотел бы, чтобы подсчитать количество совпадений, а не просто видеть, что результаты. Вероятно, это манипуляция первой строкой кода, но я изо всех сил пытаюсь найти логику.
risk_codes <- c("J1","F45","H987")
Col1 Col2 Col3 Col4 Diag_1 Diag_2 Diag_3 ... Diag_20 newcol count
data data data data J123 F456 H789 E468 1 2
data data data data T452 NA NA NA 0 0
Вы должны включить [воспроизводимый пример]() в вопросе с вводом образца и желаемым выход для этого ввода. Странно, что вы указываете «решение» в своем собственном вопросе. Может быть, вы можете сделать это более понятным, что на самом деле не то, что вам нужно. – MrFlick
Хороший момент, извините. – tfmunkey
Я думаю, вы хотите сказать, что столбцы 5-24 являются кодами dx. В противном случае код, возможно, не принесет полезных результатов. –