[R-br] Identificando e criando nova variável por uma expressão regular
Felipe Barletta
felipe.e.barletta em gmail.com
Sex Mar 5 17:45:55 -03 2021
Prezados,
Preciso de uma ajuda para resolver a seguinte questão:
Possuo uma lista de nomes de medicamentos. Preciso identificar seus nomes
em um vetor em que há informações de medicamentos preescritos.
Para isso estou usando a função grep().
Após identificar, quero incluir no data frame uma nova coluna contendo o
nome do medicamento da primeira lista.
Segue um código reproduzível
##### Lista de medicamentos que guardei em um objeto chamado patterns
patterns <-
structure(c(1L, 2L, 3L, 4L, 6L, 7L, 5L, 8L, 9L, 10L, 11L), .Label =
c("Oritavancina",
"Oxacilina", "Pefloxacino", "Penicilina", "Pexiganan", "Piperacilina",
"Piperacilina-tazobactam", "Pirazinamida", "Plazomicina", "Polimixina B",
"Posilozid"), class = "factor")
### Amostra do Data frame em que preciso encontrar os nomes da lista acima
df <-
structure(list(nome = structure(c(9L, 11L, 3L, 3L, 7L, 2L, 4L,
5L, 8L, 6L, 10L, 1L), .Label = c("CLORETO DE POTASSIO DRAGEA 600MG",
"CLORETO DE SODIO 0,9% SERINGA PREENCHIDA 5ML", "CLORETO DE SODIO SOLUCAO
INJETAVEL 0,9% 10ML",
"CODEINA FOSFATO SOLUCAO ORAL 3MGML 10ML ISCMPA @", "CODEINA FOSFATO
SOLUCAO ORAL 3MGML 5ML ISCMPA @",
"DipiRONA SOLUCAO INJETAVEL 500MGML 2ML", "FUROSEMIDA SOLUCAO INJETAVEL
10MGML 2ML",
"HIDROCORTISONA SUCCINATO SODICO PO LIOFILO INJETAVEL 100MG",
"ONDANSETRONA CLORIDRATO SOLUCAO INJETAVEL 2MGML 4ML", "Penicilina G
BENZATINA PO LIOFILO INJETAVEL 1200000UI",
"PIPERACILINA SODICA 4G + TAZOBACTAM SODICA 0,5G PO LIOFILO INJETAVEL"
), class = "factor"), ID = c(13750598L, 13797248L, 13797248L,
13797248L, 13727853L, 13727853L, 13922033L, 13922033L, 13923030L,
13923030L, 13923030L, 13877978L), date = structure(c(1L, 2L,
2L, 2L, 3L, 3L, 4L, 4L, 5L, 5L, 5L, 6L), .Label = c("2021-01-01 00:08:14",
"2021-01-01 00:20:39", "2021-01-01 00:22:18", "2021-01-31 23:53:48",
"2021-01-31 23:58:50", "2021-01-31 23:59:47"), class = "factor")),
row.names = c(1L,
2L, 3L, 4L, 5L, 6L, 583867L, 583868L, 583869L, 583870L, 583871L,
583872L), class = "data.frame")
### Usei esse código para identificar os medicamentos
matches <- unlist(sapply(patterns, function(p) grep(p, df$nome,
value = FALSE,
ignore.case = TRUE)
)
)
encontrados <- df[matches,]
Porém além de identificar, quero incluir no df uma nova variável
identificando o nome do medicamento que consta na lista (patterns) - como
segue exemplo Abaixo:
dados
nome
1 ONDANSETRONA CLORIDRATO SOLUCAO INJETAVEL 2MGML 4ML
2 PIPERACILINA SODICA 4G + TAZOBACTAM SODICA 0,5G PO LIOFILO INJETAVEL
3 CLORETO DE SODIO SOLUCAO INJETAVEL 0,9% 10ML
4 CLORETO DE SODIO SOLUCAO INJETAVEL 0,9% 10ML
5 FUROSEMIDA SOLUCAO INJETAVEL 10MGML 2ML
6 CLORETO DE SODIO 0,9% SERINGA PREENCHIDA 5ML
583867 CODEINA FOSFATO SOLUCAO ORAL 3MGML 10ML ISCMPA @
583868 CODEINA FOSFATO SOLUCAO ORAL 3MGML 5ML ISCMPA @
583869 HIDROCORTISONA SUCCINATO SODICO PO LIOFILO INJETAVEL 100MG
583870 DipiRONA SOLUCAO INJETAVEL 500MGML 2ML
583871 Penicilina G BENZATINA PO LIOFILO INJETAVEL 1200000UI
583872 CLORETO DE POTASSIO DRAGEA 600MG
ID date Medicamento
1 13750598 2021-01-01 00:08:14 Não consta na lista
2 13797248 2021-01-01 00:20:39 *Piperacilina*
3 13797248 2021-01-01 00:20:39 Não consta na lista
4 13797248 2021-01-01 00:20:39 Não consta na lista
5 13727853 2021-01-01 00:22:18 Não consta na lista
6 13727853 2021-01-01 00:22:18 Não consta na lista
583867 13922033 2021-01-31 23:53:48 Não consta na lista
583868 13922033 2021-01-31 23:53:48 Não consta na lista
583869 13923030 2021-01-31 23:58:50 Não consta na lista
583870 13923030 2021-01-31 23:58:50 Não consta na lista
583871 13923030 2021-01-31 23:58:50 *Penicilina*
583872 13877978 2021-01-31 23:59:47 Outro medicamento
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20210305/d35e9c94/attachment.html>
Mais detalhes sobre a lista de discussão R-br