[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 23:03:02 CEST 2022


hola muchas gracias! ahora prueba esto que me decís!
por ahora resolví así, seguro luego lo mejore!

a$var.3<-(!str_detect(a$Remito,"\\E\\+"))
a$var.4<-(str_detect(a$Remito,"\\E\\+"))

a<-a %>%
  mutate(var4=ifelse (var.3==FALSE ,Remito,NA))

a<-a %>%
  mutate(var5=ifelse (var.3==TRUE ,Remito,NA))

a$var.6<-ifelse(is.na(a$var4),a$var5,a$var4)


El mar, 31 may 2022 a las 17:53, Marcelino de la Cruz Rot (<
marcelino.delacruz using urjc.es>) escribió:

> Hola:
> Puedes conseguirlo fácilmente con algunas frases de R básico:
>
> variable<- c("9,301E+11","8,301E+11","00001-00170818","1000055365","G.A.
> 001-24699570")
> cuales.cientificos <- grep("E+", variable)
>
> cientificos <- variable[cuales.cientificos]
> cientificos <- sub(",", ".", cientificos)
> options(scipen=999)
> cientificos <- as.character(as.numeric(cientificos))
>
> variable3 <- variable
> variable3[cuales.cientificos] <- cientificos
> variable3
> [1] "930100000000" "830100000000"      "00001-00170818"
> "1000055365"        "G.A. 001-24699570"
>
>
> Un saludo,
> Marcelino
>
>
>
> El 31/05/2022 a las 21:38, juan manuel dias 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
>
>
> --
> Marcelino de la Cruz Rot
> Depto. de Biología y Geología
> Física y Química Inorgánica
> Universidad Rey Juan Carlos
> Móstoles España
>
> _______________________________________________
> 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