[R-es] aplicar codigo

Samura . tont|to82 @end|ng |rom hotm@||@com
Jue Sep 10 22:34:36 CEST 2020


Solucionado entonces,
muchas gracias!!!!
________________________________
De: R-help-es <r-help-es-bounces using r-project.org> en nombre de Marcelino de la Cruz Rot <marcelino.delacruz using urjc.es>
Enviado: jueves, 10 de septiembre de 2020 19:20
Para: David Mateos <porquewhich using hotmail.com>
Cc: r-help-es using r-project.org <r-help-es using r-project.org>
Asunto: Re: [R-es] aplicar codigo

Ya s� a qu� se debe:
En vuestro R, la funci�n data.frame transforma autom�ticamente los
vectores de tipo /character/ a tipo/factor/.
Con un factor, sapply devuelve el n�mero del nivel correspondiente:

 > col1 <- c('x1', 'x2', 'x11', 'x1','x33', 'x1','x4', 'x5', 'x35',
'x1','x2', 'x4')

 > sapply(col1, function(x) ifelse(x%in%c("x1","x2","x3"),
"prueba12",ifelse(x%in%c("x4","x5","x6"),"prueba2",x)))
         x1         x2        x11         x1        x33 x1
x4         x5        x35         x1         x2 x4
"prueba12" "prueba12"      "x11" "prueba12"      "x33" "prueba12"
"prueba2"  "prueba2"      "x35" "prueba12" "prueba12"  "prueba2"

 > sapply(factor(col1), function(x) ifelse(x%in%c("x1","x2","x3"),
"prueba12",ifelse(x%in%c("x4","x5","x6"),"prueba2",x)))
  [1] "prueba12" "prueba12" "2"        "prueba12" "4" "prueba12"
"prueba2"  "prueba2"  "5"        "prueba12" "prueba12" "prueba2"
 >




El 10/09/2020 a las 20:35, David Mateos escribi�:
> Hola,
> a m� me sucede como a Samura y no consigo entender de donde salen esos
> "2", "4" y "5" para df1. �Alguien puede arrojar luz?
> Tanto con la versi�n 3.6 como con la 4.0.2
>
> Si me funciona con
> ```
> transforma <- function(df) {
>   apply(df, 1, function(x)
>     ifelse(x%in%c("x1","x2","x3"),
>            "prueba12",
>            ifelse(x%in%c("x4","x5","x6"),
>                   "prueba2",x)
>            )
>     )
> }
> df1$transformacion <- transforma(df1)
> ```
> Un saludo,
> David
>
> Enviado desde Outlook <http://aka.ms/weboutlook>
>
> ------------------------------------------------------------------------
> *De:* R-help-es <r-help-es-bounces using r-project.org> en nombre de
> Marcelino de la Cruz Rot <marcelino.delacruz using urjc.es>
> *Enviado:* jueves, 10 de septiembre de 2020 19:15
> *Para:* Samura . <tontito82 using hotmail.com>; r-help-es using r-project.org
> <r-help-es using r-project.org>
> *Asunto:* Re: [R-es] aplicar codigo
> Yo copio y pego este c�digo y me sale correctamente. Se me ocurre que
> pueda deberse a la versi�n de R �cu�l usas?
>
>
> El 10/09/2020 a las 17:51, Samura . escribi�:
> > Gracias por las respuestas.
> >
> > Prob� lo de hacer la funci�n y no me sal�a. Pensaba que hac�a algo mal.
> > Ahora con el c�digo de Marcelino tampoco me sale.
> >
> > col1 <- c('x1', 'x2', 'x11', 'x1','x33', 'x1','x4', 'x5', 'x35',
> > 'x1','x2', 'x4')
> > col2 <- c('x12', 'x4', 'x6', 'x771','x4', 'x2')
> > col3 <- c('x7', 'x2', 'x4', 'x5','x111', 'x1','x4', 'x5',
> > 'x35','x2','x2', 'x4','x6', 'x5')
> >
> > df1<-data.frame(col1)
> > df2<-data.frame(col2)
> > df3<-data.frame(col3)
> >
> > transforma <- function(df) sapply(df, function(x)
> >     ifelse(x%in%c("x1","x2","x3"),
> >  "prueba12",ifelse(x%in%c("x4","x5","x6"),"prueba2",x)))
> >
> > transforma(df1)
> > col1
> > [1,] "prueba12"
> > [2,] "prueba12"
> > [3,] "2"
> > [4,] "prueba12"
> > [5,] "4"
> > [6,] "prueba12"
> > [7,] "prueba2"
> > [8,] "prueba2"
> > [9,] "5"
> > [10,] "prueba12"
> > [11,] "prueba12"
> > [12,] "prueba2"
> >
> > �Alguna idea de pq me sale 2, 4, 5?
> > ------------------------------------------------------------------------
> > *De:* R-help-es <r-help-es-bounces using r-project.org> en nombre de
> > Marcelino de la Cruz Rot <marcelino.delacruz using urjc.es>
> > *Enviado:* jueves, 10 de septiembre de 2020 9:36
> > *Para:* r-help-es using r-project.org <r-help-es using r-project.org>
> > *Asunto:* Re: [R-es] aplicar codigo
> > Hola:
> > Como dice Carlos, algo as�, por ejemplo:
> >
> > transforma <- function(df) sapply(df, function(x)
> > ifelse(x%in%c("x1","x2","x3"),
> > "prueba1",ifelse(x%in%c("x4","x5","x6"),"prueba2",x)))
> >
> >
> >  > transforma(df1)
> >        col1
> >   [1,] "prueba1"
> >   [2,] "prueba1"
> >   [3,] "x11"
> >   [4,] "prueba1"
> >   [5,] "x33"
> >   [6,] "prueba1"
> >   [7,] "prueba2"
> >   [8,] "prueba2"
> >   [9,] "x35"
> > [10,] "prueba1"
> > [11,] "prueba1"
> > [12,] "prueba2"
> >
> >
> >  > transforma(df2)
> >       col2
> > [1,] "x12"
> > [2,] "prueba2"
> > [3,] "prueba2"
> > [4,] "x771"
> > [5,] "prueba2"
> > [6,] "prueba1"
> >
> >
> >  > transforma(df3)
> >        col3
> >   [1,] "x7"
> >   [2,] "prueba1"
> >   [3,] "prueba2"
> >   [4,] "prueba2"
> >   [5,] "x111"
> >   [6,] "prueba1"
> >   [7,] "prueba2"
> >   [8,] "prueba2"
> >   [9,] "x35"
> > [10,] "prueba1"
> > [11,] "prueba1"
> > [12,] "prueba2"
> > [13,] "prueba2"
> > [14,] "prueba2"
> >
> > Saludos,
> >
> > Marcelino
> >
> > El 10/09/2020 a las 9:41, Carlos Ortega escribi�:
> > > Hola,
> > > Si lo estoy entendiendo bien, lo que tienes que crearte es una
> funci�n.
> > > A la funci�n le pasar�as unos par�metros (las columnas y el
> dataframe al
> > > que a�adir la transformaci�n), y en el cuerpo de la funci�n haces esos
> > > c�lculos.
> > >
> > > Gracias,
> > > Carlos.
> > >
> > >
> > >
> > > Gracias,
> > > Carlos.
> > >
> > > El jue., 10 sept. 2020 a las 3:55, Samura . (<tontito82 using hotmail.com>)
> > > escribi�:
> > >
> > >> Hola,
> > >> me gustar�a hacer algo como en el siguiente ejemplo
> > >>
> > >> A un df a�adirle una columna que es la transformaci�n de otra,
> > >> en plan a todo lo que sea  x1, x2, x3 lo llamo prueba 1
> > >> todo lo que sea x4,x5,x6 lo llamo prueba 2
> > >> el resto de x las dejo como est�n.
> > >>
> > >> Ser�a algo as�
> > >>
> > >> col1 <- c('x1', 'x2', 'x11', 'x1','x33', 'x1','x4', 'x5', 'x35',
> > >> 'x1','x2', 'x4')
> > >> df1<-data.frame(col1)
> > >> attach(df1)
> > >>
> > >> df1$transformacion<-ifelse(col1 == "x1"|col1 == "x2"| col1 == "x3",
> > >> "prueba1",
> > >>                             ifelse(col1 == "x4"|col1 == "x5"| col1
> > == "x6",
> > >> "prueba2", col1))
> > >>
> > >> detach(df1)
> > >> df1
> > >>
> > >> pero ahora en vez de un df tengo varios
> > >>
> > >> col2 <- c('x12', 'x4', 'x6', 'x771','x4', 'x2')
> > >> col3 <- c('x7', 'x2', 'x4', 'x5','x111', 'x1','x4', 'x5',
> > 'x35','x2','x2',
> > >> 'x4','x6', 'x5')
> > >> df2<-data.frame(col2)
> > >> df3<-data.frame(col3)
> > >>
> > >> �c�mo puedo aplicar el c�digo al resto de los df sin tener que
> > repetirlo?
> > >>
> > >>
> > >>
> > >>          [[alternative HTML version deleted]]
> > >>
> > >> _______________________________________________
> > >> R-help-es mailing list
> > >> R-help-es using r-project.org
> > >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> <https://stat.ethz.ch/mailman/listinfo/r-help-es>
> > <https://stat.ethz.ch/mailman/listinfo/r-help-es
> <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
> <https://stat.ethz.ch/mailman/listinfo/r-help-es>
> > <https://stat.ethz.ch/mailman/listinfo/r-help-es
> <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
> <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