juan manuel dias
2023-Mar-09 13:20 UTC
[R-es] reemplazar valores en texto según condiciones
Hola, Algo que me está pasando con esta función es lo siguiente: A "p1" lo tengo que reemplazar por "p1_integra_datos" y a "p10" por "p10_cuales_rep", pero como p10 contiene p1, y así pasa con otras preguntas (p2 y p20, por ejemplo), me los reemplaza en ambas, cuándo lo que busco es otra cosa. reglas$condicion_final <- stri_replace_all_fixed(reglas$condicion_minus, c("p1","p2","p3","p4","p5","p6","p7","p8","p9","p10"), c("p1_integra_datos","p2_recop_dat","p3_como_recop","p4_bases_prop","p5_cuales_bases", "p6_cuanto_integ_dat","p7_tec_integr_dat","p8_documen_pol_int","p9_report_dat","p10_cuales_rep"), vectorize_all = FALSE) Se les ocurre como resolverlo, estoy agregando un guión bajo después de cada pregunta p1_ p10_ para que esto no pase, pero no se me ocurre como hacerlo en el código. Muchas gracias! Juan. El mar, 7 mar 2023 a las 14:11, Carlos Ortega (<cof en qualityexcellence.es>) escribió:> Hola, > > Dentro de la librería "stringi" tienes la posibilidad de hacer lo que > quieres de forma vectorizada y super eficiente. > De esta forma..: > > library(stringi) > texto_nuevo <- stri_replace_all_fixed(texto, c('p1', 'p2'), > c('p1_integra_datos', 'p2_recop_dat'), vectorize_all = FALSE) > > Gracias, > Carlos Ortega > www.qualityexcellence.es > > El mar, 7 mar 2023 a las 18:04, juan manuel dias (<juamadias en gmail.com>) > escribió: > >> Hola, como andan! Espero que bien! >> Tengo dos bases, A) tiene una variable texto en la que deseo reemplazar >> ciertas partes y B) tengo las condiciones para cambiar ese texto de la >> base >> A. >> >> Base A >> >> texto >> si p1 = 1 o 2 = 1,3 >> si p1 = 3 o 4 = 1 >> si p1 = 5 = 0,7 >> si p1 = 5 = 0,7 >> si p1 = 6 = 0 >> si p1 = 7 = "no aplica" >> si p2 = 1 & p3 = 1 = 0,5 >> si p2 = 1 & p3 = 2 = 0,7 >> si p2 = 1 & p3 = 4 o 3 = 1 >> si p2 = 1 & p3 = 5 = 0,5 >> si p2 = 1 & p3 = 6 = 0,5 >> si p2 = 2 = 0 >> si p2 = 3 = 0 >> si p2 = 4 = no aplica >> Base B >> >> texto_a_reemplazar_en_base_A texto_final_en_A >> p1 p1_integra_datos >> p2 p2_recop_dat >> >> Lo estoy haciendo con condiciones IF ELSE pero se me hace un código muy >> largo. >> Estoy probando de armar un for que recorra base A y lo reemplace por el >> texto que está en Base B. >> >> Si alguno se le ocurre más que agradecido! >> >> Gracias! Juan. >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es >[[alternative HTML version deleted]]
Buenas, Se me hace raro que la función no admita un parámetro para eso. Una opción es hacerlo en dos pasos: P1: Reemplaza p10, p20, ... por algo como q10, q20, ... P2: Haz el reemplazo que quieres. Igualmente puedes hacer el reemplazo que haces y en un segundo paso reemplazar p10_integra_datos por p10_cuales_rep, ... Un saludo, Manuel. El jue, 09-03-2023 a las 10:20 -0300, juan manuel dias escribió:> Hola, > Algo que me está pasando con esta función es lo siguiente: > A "p1" lo tengo que reemplazar por "p1_integra_datos" y a "p10" por > "p10_cuales_rep", pero como p10 contiene p1, y así pasa con otras preguntas > (p2 y p20, por ejemplo), > me los reemplaza en ambas, cuándo lo que busco es otra cosa. > > reglas$condicion_final <- stri_replace_all_fixed(reglas$condicion_minus, > c("p1","p2","p3","p4","p5","p6","p7","p8","p9","p10"), > c("p1_integra_datos","p2_recop_dat","p3_como_recop","p4_bases_prop","p5_cuales_bases", > "p6_cuanto_integ_dat","p7_tec_integr_dat","p8_documen_pol_int","p9_report_dat","p10_cuales_rep"), > vectorize_all = FALSE) > > Se les ocurre como resolverlo, estoy agregando un guión bajo después de > cada pregunta p1_ p10_ para que esto no pase, pero no se me ocurre > como hacerlo en el código. > > Muchas gracias! Juan. > > El mar, 7 mar 2023 a las 14:11, Carlos Ortega (<cof en qualityexcellence.es>) > escribió: > > > Hola, > > > > Dentro de la librería "stringi" tienes la posibilidad de hacer lo que > > quieres de forma vectorizada y super eficiente. > > De esta forma..: > > > > library(stringi) > > texto_nuevo <- stri_replace_all_fixed(texto, c('p1', 'p2'), > > c('p1_integra_datos', 'p2_recop_dat'), vectorize_all = FALSE) > > > > Gracias, > > Carlos Ortega > > https://urldefense.com/v3/__http://www.qualityexcellence.es__;!!D9dNQwwGXtA!SO5aun-Yamxtje74i5V9XQrQWI1Q_2DNWSIHAcTX9KKrRMnoOhf63fSSytvNHICE1skDvn91OxPAun4$ > > > > > > El mar, 7 mar 2023 a las 18:04, juan manuel dias (<juamadias en gmail.com>) > > escribió: > > > > > Hola, como andan! Espero que bien! > > > Tengo dos bases, A) tiene una variable texto en la que deseo reemplazar > > > ciertas partes y B) tengo las condiciones para cambiar ese texto de la > > > base > > > A. > > > > > > Base A > > > > > > texto > > > si p1 = 1 o 2 = 1,3 > > > si p1 = 3 o 4 = 1 > > > si p1 = 5 = 0,7 > > > si p1 = 5 = 0,7 > > > si p1 = 6 = 0 > > > si p1 = 7 = "no aplica" > > > si p2 = 1 & p3 = 1 = 0,5 > > > si p2 = 1 & p3 = 2 = 0,7 > > > si p2 = 1 & p3 = 4 o 3 = 1 > > > si p2 = 1 & p3 = 5 = 0,5 > > > si p2 = 1 & p3 = 6 = 0,5 > > > si p2 = 2 = 0 > > > si p2 = 3 = 0 > > > si p2 = 4 = no aplica > > > Base B > > > > > > texto_a_reemplazar_en_base_A texto_final_en_A > > > p1 p1_integra_datos > > > p2 p2_recop_dat > > > > > > Lo estoy haciendo con condiciones IF ELSE pero se me hace un código muy > > > largo. > > > Estoy probando de armar un for que recorra base A y lo reemplace por el > > > texto que está en Base B. > > > > > > Si alguno se le ocurre más que agradecido! > > > > > > Gracias! Juan. > > > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > > R-help-es mailing list > > > R-help-es en r-project.org > > > https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-help-es__;!!D9dNQwwGXtA!SO5aun-Yamxtje74i5V9XQrQWI1Q_2DNWSIHAcTX9KKrRMnoOhf63fSSytvNHICE1skDvn91JE_WlVY$ > > > > > > > > > > > > -- > > Saludos, > > Carlos Ortega > > https://urldefense.com/v3/__http://www.qualityexcellence.es__;!!D9dNQwwGXtA!SO5aun-Yamxtje74i5V9XQrQWI1Q_2DNWSIHAcTX9KKrRMnoOhf63fSSytvNHICE1skDvn91OxPAun4$ > > > > > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-help-es__;!!D9dNQwwGXtA!SO5aun-Yamxtje74i5V9XQrQWI1Q_2DNWSIHAcTX9KKrRMnoOhf63fSSytvNHICE1skDvn91JE_WlVY$ >