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
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
>>
>
--
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
[[alternative HTML version deleted]]
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 > > _______________________________________________ > 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
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
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
https://stat.ethz.ch/mailman/listinfo/r-help-es
[[alternative HTML version deleted]]
Que bueno!
el famoso stringsAsFactors.
Muchas gracias Marcelino, un saludo
Enviado desde Outlook<http://aka.ms/weboutlook>
________________________________
De: Marcelino de la Cruz Rot <marcelino.delacruz en urjc.es>
Enviado: jueves, 10 de septiembre de 2020 21: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
[[alternative HTML version deleted]]