Substituir/apagar strings.

Boa tarde prezados!!! Parece um do "ridículas", mas não consegui resolver. Segue o vetor de exemplo: teste<-c(rep("EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)",3),rep("EIA/EF/EQ/Q (U/mL) IgG - Valor (U/mL)",5))data.frame(teste) Eu preciso apagar os trechos do meu data.frame onde aparece o termo "EIA/EF/EQ/Q (U/mL)". Tentei usar o comando abaixo: gsub("EIA/EF/EQ/Q (U/mL)","",teste) mas não obtive sucesso. Alguém teria uma ideia de onde estou errando, ou se tem algum comando melhor no tidyverse ou dplyr para fazer isso? Obrigado!!! Diogo JerônimoBacharel em Ciências Estatísticas - ENCE/IBGEMestre em Metrologia - PUC-Rio/PósMQICONRE: 8514 - SÉRIE Ahttp://lattes.cnpq.br/8996149312896520

Olá, Use o código a seguir para resolver o seu problema: ### inicio do codigo teste<-c(rep("EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)",3),rep("EIA/EF/EQ/Q (U/mL) IgG - Valor (U/mL)",5)) teste <- data.frame(teste) library(tidyverse) teste %>% mutate(teste_limpo = str_replace_all(teste, "EIA/EF/EQ/Q \\(U/mL\\)", "")) ### fim do codigo Também seria possível resolver o problema sem apelar para o tidyverse: ### inicio do codigo gsub("EIA/EF/EQ/Q \\(U/mL\\)","",teste$teste) ### fim do codigo O problema de utilizar "(" ou ")" diretamente, sem usar os caracteres de escape (ou seja, "\\(" ou "\\)") é que os comandos str_replace_all e gsub entendem isso como uma expressão regular, criando assim um grupo de caracteres e não fazendo a limpeza da maneira esperada originalmente. Atenciosamente, -- Marcus Nunes Professor Adjunto https://marcusnunes.me/ Universidade Federal do Rio Grande do Norte Departamento de Estatística Laboratório de Estatística Aplicada - http://lea.estatistica.ccet.ufrn.br Curso de Big Data - https://introbigdata.org Aplicações em Shiny - http://shiny.estatistica.ccet.ufrn.br On Mon, Oct 25, 2021 at 1:32 PM Diogo Jerônimo por (R-br) < r-br@listas.c3sl.ufpr.br> wrote:
Boa tarde prezados!!! Parece um do "ridículas", mas não consegui resolver. Segue o vetor de exemplo:
teste<-c(rep("EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)",3),rep("EIA/EF/EQ/Q (U/mL) IgG - Valor (U/mL)",5)) data.frame(teste)
Eu preciso *apagar* os trechos do meu data.frame onde aparece o termo "EIA/EF/EQ/Q (U/mL)". Tentei usar o comando abaixo:
gsub("EIA/EF/EQ/Q (U/mL)","",teste)
mas não obtive sucesso. Alguém teria uma ideia de onde estou errando, ou se tem algum comando melhor no tidyverse ou dplyr para fazer isso?
Obrigado!!!
*Diogo Jerônimo* *Bacharel em Ciências Estatísticas - ENCE/IBGE* *Mestre em Metrologia - PUC-Rio/PósMQI* *CONRE: 8514 - SÉRIE A* *http://lattes.cnpq.br/8996149312896520 <http://lattes.cnpq.br/8996149312896520>* _______________________________________________ R-br mailing list R-br@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.

Prezado professor, resolveu, já estava com cabelo branco aqui rs... Muito obrigado e ótima tarde!!! Diogo JerônimoBacharel em Ciências Estatísticas - ENCE/IBGEMestre em Metrologia - PUC-Rio/PósMQICONRE: 8514 - SÉRIE AEmail: diogojose21@yahoo.com.brhttp://lattes.cnpq.br/8996149312896520 Em segunda-feira, 25 de outubro de 2021 13:55:42 BRT, Marcus Nunes <marcus.nunes@gmail.com> escreveu: Olá, Use o código a seguir para resolver o seu problema: ### inicio do codigo teste<-c(rep("EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)",3),rep("EIA/EF/EQ/Q (U/mL) IgG - Valor (U/mL)",5)) teste <- data.frame(teste) library(tidyverse) teste %>% mutate(teste_limpo = str_replace_all(teste, "EIA/EF/EQ/Q \\(U/mL\\)", ""))### fim do codigo Também seria possível resolver o problema sem apelar para o tidyverse: ### inicio do codigogsub("EIA/EF/EQ/Q \\(U/mL\\)","",teste$teste)### fim do codigo O problema de utilizar "(" ou ")" diretamente, sem usar os caracteres de escape (ou seja, "\\(" ou "\\)") é que os comandos str_replace_all e gsub entendem isso como uma expressão regular, criando assim um grupo de caracteres e não fazendo a limpeza da maneira esperada originalmente. Atenciosamente, --Marcus NunesProfessor Adjuntohttps://marcusnunes.me/Universidade Federal do Rio Grande do NorteDepartamento de EstatísticaLaboratório de Estatística Aplicada - http://lea.estatistica.ccet.ufrn.brCurso de Big Data - https://introbigdata.org Aplicações em Shiny - http://shiny.estatistica.ccet.ufrn.br On Mon, Oct 25, 2021 at 1:32 PM Diogo Jerônimo por (R-br) <r-br@listas.c3sl.ufpr.br> wrote: Boa tarde prezados!!! Parece um do "ridículas", mas não consegui resolver. Segue o vetor de exemplo: teste<-c(rep("EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)",3),rep("EIA/EF/EQ/Q (U/mL) IgG - Valor (U/mL)",5))data.frame(teste) Eu preciso apagar os trechos do meu data.frame onde aparece o termo "EIA/EF/EQ/Q (U/mL)". Tentei usar o comando abaixo: gsub("EIA/EF/EQ/Q (U/mL)","",teste) mas não obtive sucesso. Alguém teria uma ideia de onde estou errando, ou se tem algum comando melhor no tidyverse ou dplyr para fazer isso? Obrigado!!! Diogo JerônimoBacharel em Ciências Estatísticas - ENCE/IBGEMestre em Metrologia - PUC-Rio/PósMQICONRE: 8514 - SÉRIE Ahttp://lattes.cnpq.br/8996149312896520 _______________________________________________ R-br mailing list R-br@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.

Diego, Você já tem a solução, *mas* a 1ª parte da sua pergunta « Alguém teria uma ideia de onde estou errando, » me parece que todavia não foi endereçada explicitamente. Considerando o exemplo de dados que vc passou acima, a solução é empregar a *expressão regular* adequada aos seus dados, da qual a função gsub depende para "entender" o que o programador deseja:
gsub("EIA/EF/EQ/Q \\(U/mL\\)","",teste) [1] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [2] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [3] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [4] " IgG - Valor (U/mL)" [5] " IgG - Valor (U/mL)" [6] " IgG - Valor (U/mL)" [7] " IgG - Valor (U/mL)" [8] " IgG - Valor (U/mL)"
Para os detalhes excruciantemente intestinos recomendo a leitura do manual na entrada regex. HTH -- Cesar Rabak On Mon, Oct 25, 2021 at 1:32 PM Diogo Jerônimo por (R-br) < r-br@listas.c3sl.ufpr.br> wrote:
Boa tarde prezados!!! Parece um do "ridículas", mas não consegui resolver. Segue o vetor de exemplo:
teste<-c(rep("EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)",3),rep("EIA/EF/EQ/Q (U/mL) IgG - Valor (U/mL)",5)) data.frame(teste)
Eu preciso *apagar* os trechos do meu data.frame onde aparece o termo "EIA/EF/EQ/Q (U/mL)". Tentei usar o comando abaixo:
gsub("EIA/EF/EQ/Q (U/mL)","",teste)
mas não obtive sucesso. Alguém teria uma ideia de onde estou errando, ou se tem algum comando melhor no tidyverse ou dplyr para fazer isso?
Obrigado!!!
*Diogo Jerônimo* *Bacharel em Ciências Estatísticas - ENCE/IBGE* *Mestre em Metrologia - PUC-Rio/PósMQI* *CONRE: 8514 - SÉRIE A* *http://lattes.cnpq.br/8996149312896520 <http://lattes.cnpq.br/8996149312896520>* _______________________________________________ R-br mailing list R-br@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.

Por completude, devo incluir esta outra possível sintaxe:
gsub("EIA/EF/EQ/Q (U/mL)","",teste, fixed=T) [1] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [2] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [3] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [4] " IgG - Valor (U/mL)" [5] " IgG - Valor (U/mL)" [6] " IgG - Valor (U/mL)" [7] " IgG - Valor (U/mL)" [8] " IgG - Valor (U/mL)"
Por alguma razão quando colei na 1ª vez, veio só uma parte do meu exemplo... de novo, HTH -- Cesar Rabak On Tue, Oct 26, 2021 at 11:28 AM Cesar Rabak <cesar.rabak@gmail.com> wrote:
Diego,
Você já tem a solução, *mas* a 1ª parte da sua pergunta « Alguém teria uma ideia de onde estou errando, » me parece que todavia não foi endereçada explicitamente.
Considerando o exemplo de dados que vc passou acima, a solução é empregar a *expressão regular* adequada aos seus dados, da qual a função gsub depende para "entender" o que o programador deseja:
gsub("EIA/EF/EQ/Q \\(U/mL\\)","",teste) [1] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [2] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [3] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [4] " IgG - Valor (U/mL)" [5] " IgG - Valor (U/mL)" [6] " IgG - Valor (U/mL)" [7] " IgG - Valor (U/mL)" [8] " IgG - Valor (U/mL)"
Para os detalhes excruciantemente intestinos recomendo a leitura do manual na entrada regex.
HTH
-- Cesar Rabak
On Mon, Oct 25, 2021 at 1:32 PM Diogo Jerônimo por (R-br) < r-br@listas.c3sl.ufpr.br> wrote:
Boa tarde prezados!!! Parece um do "ridículas", mas não consegui resolver. Segue o vetor de exemplo:
teste<-c(rep("EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)",3),rep("EIA/EF/EQ/Q (U/mL) IgG - Valor (U/mL)",5)) data.frame(teste)
Eu preciso *apagar* os trechos do meu data.frame onde aparece o termo "EIA/EF/EQ/Q (U/mL)". Tentei usar o comando abaixo:
gsub("EIA/EF/EQ/Q (U/mL)","",teste)
mas não obtive sucesso. Alguém teria uma ideia de onde estou errando, ou se tem algum comando melhor no tidyverse ou dplyr para fazer isso?
Obrigado!!!
*Diogo Jerônimo* *Bacharel em Ciências Estatísticas - ENCE/IBGE* *Mestre em Metrologia - PUC-Rio/PósMQI* *CONRE: 8514 - SÉRIE A* *http://lattes.cnpq.br/8996149312896520 <http://lattes.cnpq.br/8996149312896520>* _______________________________________________ R-br mailing list R-br@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.

Obrigado César, acabou sendo didático para mim, ainda enviesado com minha visão de comandos rs... Vlw Diogo JerônimoBacharel em Ciências Estatísticas - ENCE/IBGEMestre em Metrologia - PUC-Rio/PósMQICONRE: 8514 - SÉRIE Ahttp://lattes.cnpq.br/8996149312896520 Em terça-feira, 26 de outubro de 2021 11:32:16 BRT, Cesar Rabak <cesar.rabak@gmail.com> escreveu: Por completude, devo incluir esta outra possível sintaxe:
gsub("EIA/EF/EQ/Q (U/mL)","",teste, fixed=T) [1] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [2] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [3] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [4] " IgG - Valor (U/mL)" [5] " IgG - Valor (U/mL)" [6] " IgG - Valor (U/mL)" [7] " IgG - Valor (U/mL)" [8] " IgG - Valor (U/mL)"
Por alguma razão quando colei na 1ª vez, veio só uma parte do meu exemplo... de novo, HTH --Cesar Rabak On Tue, Oct 26, 2021 at 11:28 AM Cesar Rabak <cesar.rabak@gmail.com> wrote: Diego, Você já tem a solução, mas a 1ª parte da sua pergunta « Alguém teria uma ideia de onde estou errando, » me parece que todavia não foi endereçada explicitamente. Considerando o exemplo de dados que vc passou acima, a solução é empregar a expressão regular adequada aos seus dados, da qual a função gsub depende para "entender" o que o programador deseja:
gsub("EIA/EF/EQ/Q \\(U/mL\\)","",teste) [1] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [2] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [3] "EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)" [4] " IgG - Valor (U/mL)" [5] " IgG - Valor (U/mL)" [6] " IgG - Valor (U/mL)" [7] " IgG - Valor (U/mL)" [8] " IgG - Valor (U/mL)"
Para os detalhes excruciantemente intestinos recomendo a leitura do manual na entrada regex. HTH --Cesar Rabak On Mon, Oct 25, 2021 at 1:32 PM Diogo Jerônimo por (R-br) <r-br@listas.c3sl.ufpr.br> wrote: Boa tarde prezados!!! Parece um do "ridículas", mas não consegui resolver. Segue o vetor de exemplo: teste<-c(rep("EIA/EF/EQ/Q (Índice) IgG - Valor (DO/CO, Índice)",3),rep("EIA/EF/EQ/Q (U/mL) IgG - Valor (U/mL)",5))data.frame(teste) Eu preciso apagar os trechos do meu data.frame onde aparece o termo "EIA/EF/EQ/Q (U/mL)". Tentei usar o comando abaixo: gsub("EIA/EF/EQ/Q (U/mL)","",teste) mas não obtive sucesso. Alguém teria uma ideia de onde estou errando, ou se tem algum comando melhor no tidyverse ou dplyr para fazer isso? Obrigado!!! Diogo JerônimoBacharel em Ciências Estatísticas - ENCE/IBGEMestre em Metrologia - PUC-Rio/PósMQICONRE: 8514 - SÉRIE Ahttp://lattes.cnpq.br/8996149312896520 _______________________________________________ R-br mailing list R-br@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.
participantes (3)
-
Cesar Rabak
-
Diogo Jerônimo
-
Marcus Nunes