[R-es] aplicar codigo

Samura .
Thu, 10 Sep 2020 20:34:36 -0000

Solucionado entonces,
muchas gracias!!!!
________________________________
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 19:20
Para: David Mateos <porquewhich en hotmail.com>
Cc: r-help-es en r-project.org <r-help-es en 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 en r-project.org> en nombre de
> Marcelino de la Cruz Rot <marcelino.delacruz en urjc.es>
> *Enviado:* jueves, 10 de septiembre de 2020 19:15
> *Para:* Samura . <tontito82 en hotmail.com>; r-help-es en
r-project.org
> <r-help-es en 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 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>
> > <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 en 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 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

_______________________________________________
R-help-es mailing list
R-help-es en r-project.org