Solucionado entonces, muchas gracias!!!! ________________________________ De: R-help-es <r-help-es-boun...@r-project.org> en nombre de Marcelino de la Cruz Rot <marcelino.delac...@urjc.es> Enviado: jueves, 10 de septiembre de 2020 19:20 Para: David Mateos <porquewh...@hotmail.com> Cc: r-help-es@r-project.org <r-help-es@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-boun...@r-project.org> en nombre de > Marcelino de la Cruz Rot <marcelino.delac...@urjc.es> > *Enviado:* jueves, 10 de septiembre de 2020 19:15 > *Para:* Samura . <tontit...@hotmail.com>; r-help-es@r-project.org > <r-help-es@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-boun...@r-project.org> en nombre de > > Marcelino de la Cruz Rot <marcelino.delac...@urjc.es> > > *Enviado:* jueves, 10 de septiembre de 2020 9:36 > > *Para:* r-help-es@r-project.org <r-help-es@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 . (<tontit...@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@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@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@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@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]
_______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es