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