Re: [R-es] aplicar codigo

2020-09-10 Por tema David Mateos
Que bueno!
el famoso stringsAsFactors.
Muchas gracias Marcelino, un saludo


Enviado desde Outlook<http://aka.ms/weboutlook>


De: Marcelino de la Cruz Rot 
Enviado: jueves, 10 de septiembre de 2020 21:20
Para: David Mateos 
Cc: 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 x2x11 x1x33 x1
x4 x5x35 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  en nombre de
> Marcelino de la Cruz Rot 
> *Enviado:* jueves, 10 de septiembre de 2020 19:15
> *Para:* Samura . ; 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  en nombre de
> > Marcelino de la Cruz Rot 
> > *Enviado:* jueves, 10 de septiembre de 2020 9:36
> > *Para:* 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)
> >

Re: [R-es] aplicar codigo

2020-09-10 Por tema Samura .
Solucionado entonces,
muchas gracias

De: R-help-es  en nombre de Marcelino de la 
Cruz Rot 
Enviado: jueves, 10 de septiembre de 2020 19:20
Para: David Mateos 
Cc: 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 x2x11 x1x33 x1
x4 x5x35 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  en nombre de
> Marcelino de la Cruz Rot 
> *Enviado:* jueves, 10 de septiembre de 2020 19:15
> *Para:* Samura . ; 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  en nombre de
> > Marcelino de la Cruz Rot 
> > *Enviado:* jueves, 10 de septiembre de 2020 9:36
> > *Para:* 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,

Re: [R-es] aplicar codigo

2020-09-10 Por tema Marcelino de la Cruz Rot

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  en nombre de 
Marcelino de la Cruz Rot 

*Enviado:* jueves, 10 de septiembre de 2020 19:15
*Para:* Samura . ; 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  en nombre de
> Marcelino de la Cruz Rot 
> *Enviado:* jueves, 10 de septiembre de 2020 9:36
> *Para:* 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,]

Re: [R-es] aplicar codigo

2020-09-10 Por tema Marcelino de la Cruz Rot

OK. Yo lo he hecho con R version 4.0.0 (2020-04-24) -- "Arbor Day".
Ya nos cuentas si funciona.

El 10/09/2020 a las 20:19, Samura . escribió:

R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
Rstudio Version 1.2.1335

Voy a actualizarlo todo a ver que pasa.

*De:* Marcelino de la Cruz Rot 
*Enviado:* jueves, 10 de septiembre de 2020 17:15
*Para:* Samura . ; 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  en nombre de
> Marcelino de la Cruz Rot 
> *Enviado:* jueves, 10 de septiembre de 2020 9:36
> *Para:* 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 . ()
> > 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",
> >> ife

Re: [R-es] aplicar codigo

2020-09-10 Por tema Samura .
R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
Rstudio Version 1.2.1335

Voy a actualizarlo todo a ver que pasa.

De: Marcelino de la Cruz Rot 
Enviado: jueves, 10 de septiembre de 2020 17:15
Para: Samura . ; 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  en nombre de
> Marcelino de la Cruz Rot 
> *Enviado:* jueves, 10 de septiembre de 2020 9:36
> *Para:* 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 . ()
> > 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>
> >>
> >
>
> --
> 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


[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] aplicar codigo

2020-09-10 Por tema Marcelino de la Cruz Rot
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  en nombre de 
Marcelino de la Cruz Rot 

*Enviado:* jueves, 10 de septiembre de 2020 9:36
*Para:* 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 . ()
> 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>

>>
>

--
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


Re: [R-es] aplicar codigo

2020-09-10 Por tema Samura .
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  en nombre de Marcelino de la 
Cruz Rot 
Enviado: jueves, 10 de septiembre de 2020 9:36
Para: 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 . ()
> 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
>>
>

--
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


Re: [R-es] aplicar codigo

2020-09-10 Por tema Marcelino de la Cruz Rot

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 . ()
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





--
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


Re: [R-es] aplicar codigo

2020-09-10 Por tema Carlos Ortega
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 . ()
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
>


-- 
Saludos,
Carlos Ortega
www.qualityexcellence.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


Re: [R-es] aplicar codigo

2020-09-10 Por tema Emilio L. Cano
Buenos días,

Yo usaría dplyr::recode, mira los ejemplos aquí:
https://dplyr.tidyverse.org/reference/recode.html 


Un saludo,
Emilio

> El 10 sept 2020, a las 3:55, Samura .  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


[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es