[R-es] separar una variable en dos variables por una o más condiciones

juan manuel dias ju@m@d|@@ @end|ng |rom gm@||@com
Mar Mayo 31 22:32:40 CEST 2022


Hola Javier, cómo andas!
Podría tocar la fuente de datos...en este caso la fuente es un excel que
bajo de tableau, no es una base de datos ni una vista de sql.
El tema es que quiero resolver esto directamente en R sin tener que tocar
al fuente original, más allá que podría ser un tema de formatos en ese
origen. Gracias!

El mar, 31 may 2022 a las 17:14, Javier Marcuzzi (<
javier.ruben.marcuzzi using gmail.com>) escribió:

> Estimado Jua
>
> Lo que usted busca es relativamente simple pero tiene un problema, dentro
> de lo simple, puede usar sqldf y realizar una consulta si contiene, pero
> usted puede tener un problema anterior, por ejemplo, una codificación de
> excel donde tocó la información, posiblemente un redondeo, algo que
> modificó dos datos antes del análisis en R.
>
> ¿Que posibilidad tiene de realizar una consulta a la base de datos o
> fuente original?
> Me refiero a acomodar los datos antes de R, quizás lo tiene en un archivo
> excel y en el mismo programa puede corregir los formato de las celdas.
>
> Javier Rubén Marcuzzi
>
> > El 31 may. 2022, a las 16:38, juan manuel dias <juamadias using gmail.com>
> escribió:
> >
> > Hola,
> >
> > Tengo una base de datos y en uno de las variables/vectores, que es
> formato character, dentro de ese vector me encuentro que tengo casos con
> notación científica, casos alfanuméricos etc.
> >
> > Tengo que dividir esa variable en dos nuevas variables, de forma tal que
> me quede una variable con los casos que tengan notación científica para
> convertir a número, otro que donde tenga los alfanuméricos.
> > variable<- c("9,301E+11","8,301E+11","00001-00170818","1000055365","G.A.
> 001-24699570")
> > Unidades <- c("remito","remito","remito","remito","remito")
> > base.1<-cbind(variable,Unidades)
> > base.1
> > <image.png>
> >
> > Lo que necesito sería separar "variable" asi:
> >
> > variable<- c("9,301E+11","8,301E+11","00001-00170818","1000055365","G.A.
> 001-24699570")
> > variable.1<-c("9,301E+11","8,301E+11",NA,NA,NA)
> > variable.2<-c("","","00001-00170818","1000055365","G.A. 001-24699570")
> > Unidades <- c("remito","remito","remito","remito","remito")
> > base.2<-as.data.frame(cbind(variable,variable.1,variable.2,Unidades))
> >
> > <image.png>
> >
> > Lo que no logro hacer es separar "variable" en variable.1 y variable.2.
> > Intenté con str_detect dentro de un mutate y con if_else pero no logré
> que me de el resultado que busco.
> >
> > ####
> > !str_detect(base2$variable.1,"\\E\\+"))
> > str_detect( base2$variable.1  ,"\\E\\+"))
> >
> > Teniendo esa separación luego hago lo siguiente:
> >
> > ## reemplazo comas por puntos "." en  variable.1 para convertir a
> numérica
> > ## convierto numérica variable.1
> > ## y finalmente elimino notación científica
> > base.2$variable.1 <-(gsub(",", ".", base.2$variable.1))
> > base.2$variable.1 <-as.numeric(base.2$variable.1)
> > base.2$variable.1<-format(base.2$variable.1, scientific=F)
> >
> > Y finalmente crear una variable "variable.3" que quede así:
> >
> > ## genero una variable final
> > base.2$variable.3<-ifelse(base.2$variable.1=="
> NA",base.2$variable.2,base.2$variable.1)
> > view(base.2)
> >
> > <image.png>
> >
> > Gracias!
> >
> > Juan.
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es using r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es