[R-br] Identificando e criando nova variável por uma expressão regular

Cesar Rabak cesar.rabak em gmail.com
Sex Mar 5 18:03:35 -03 2021


A primeira modificação que faria no seu *script* seria mudar a chamada a
grep passando value para TRUE.

Depois  tratar os casos conforme sua nova especificação, que me parece muda
a ordem da impressão do medicamento e coloca a substância à direita.

*caveat lector* : conceito não testado‼

HTH
--
Cesar Rabak


On Fri, Mar 5, 2021 at 5:46 PM Felipe Barletta por (R-br) <
r-br em listas.c3sl.ufpr.br> wrote:

> 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
>
>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20210305/1c9fa082/attachment.html>


Mais detalhes sobre a lista de discussão R-br