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]]
Buenos días, Yo usaría dplyr::recode, mira los ejemplos aquí: https://dplyr.tidyverse.org/reference/recode.html <https://dplyr.tidyverse.org/reference/recode.html> Un saludo, Emilio> El 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[[alternative HTML version deleted]]
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 >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
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 >> >-- 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