Я заинтересован в циклическом просмотре списка кодов диагноза и заполнении новой переменной предварительно рассчитанным показателем риска, если это значение совпадает, и, если имеется несколько совпадений, заполняет новую переменную с самым высоким показателем риска.
Я надеюсь взять длинную форму исходного набора данных и для каждого идентификатора сопоставить номер процедуры с наивысшей оценкой риска и сохранить как номер процедуры, так и оценку риска в отдельных переменных.
У меня есть некоторый опыт использования циклов if для аналогичных операций с широкими данными, но я не могу понять, как это сделать таким образом.У меня нет опыта сопоставления и последующего сохранения наибольшего значения, поэтому даже не знаю, с чего начать.
Данные, чтобы увидеть, к чему я стремлюсь:
Вот данные издля диагностических кодов
dz <-c("disease_1", "disease_2", "disease_3", "disease_4")
code <-c(124, 546, 890, 898)
risk_score <-c(10, 122, 45, 98)
df <-data.frame(dz, code, risk_score)
и имитируемого набора данных, который меня интересует
id <- c(1,1,1,2,2,2,2,3,3,4,4,4,4,4,4,5,5,5)
proc <-c(244,546,234,345,890,123,434,634,233,345,124,234,634,546,789,890,567,124)
proc<-as.character(proc)
data<-data.frame(id, proc)
, поэтому я хочу добиться чего-то вроде этого
id<-c(1,2,3,4,5)
code_match<-c(546,890,124,546,890)
highest_risk_score <-c(122,45,10,122,45)
output_df<-data.frame(id, code_match, highest_risk_score)
с этим выводом
id code_match highest_risk_score
1 1 546 122
2 2 890 45
3 3 124 10
4 4 546 122
5 5 890 45
с id, являющимся идентификатором, code_match - это код с наивысшей оценкой риска, а на самый высокий_risk_score - значение оценки риска (наибольшее значение для этого идентификатора).