[R-es] aplicar codigo

Marcelino de la Cruz Rot
Thu, 10 Sep 2020 17:15:34 -0000

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 en r-project.org> en nombre de
> Marcelino de la Cruz Rot <marcelino.delacruz en urjc.es>
> *Enviado:* jueves, 10 de septiembre de 2020 9:36
> *Para:* r-help-es en r-project.org <r-help-es en 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 en
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 en 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