[R-es] apply

Mar ía Gloria Monterubbianesi gmonterubbianesi en balcarce.inta.gov.ar
Mie Oct 12 02:46:10 CEST 2011


Hola Javier,

No usé apply, pero tal vez te sirva. Tomé tus mismos
datos y nombres para el desarrollo:

x<-c(1,2,3,4,5,6) 
y<-c(1,2,'p','s','s','p')
entonces_quiero<-data.frame(x,y) # es el data al que quieres
añadir las columnas  
# “quiero_p” y “quiero_s” con las características
indicadas:

entonces_quiero$quiero_p<-y
entonces_quiero$quiero_s<-y

entonces_quiero$quiero_p[entonces_quiero$quiero_p!='p']<-NA
entonces_quiero$quiero_s[entonces_quiero$quiero_s!='s']<-NA

entonces_quiero$quiero_p<-factor(entonces_quiero$quiero_p)
entonces_quiero$quiero_s<-factor(entonces_quiero$quiero_s)

# “entonces_quiero” quedó como deseabas

Saludos
Gloria

----- Original Message Follows -----
From: Javier Marcuzzi <javier.ruben.marcuzzi en gmail.com>
To: r-help-es en r-project.org
Subject: [R-es] apply
Date: Tue, 11 Oct 2011 17:57:24 -0300

> Nuevamente necesito ayuda, parece que en lugar de aprender
> ¿desaprendo? Es un problema sencillo, cosas que uno ya
> hacía y ahora por arte de magia no salen.
> 
> Se trata sobre apply (esta vez no intente con
> programación). La intención es crear una columna en el
> data.frame donde coloco palabras o NA, de acuerdo a una
> columna donde está todo codificado. Posiblemente se
> entiende mejor copiando y pegando los ejemplos en R que
> escribo a continuación, en entonces_quiero está el
> resultado final (deseado).
> 
> # creo algunos datos
> x<-c(1,2,3,4,5,6)
> y<-c(1,2,'p','s','s','p')
> #  Lo deseo acomodar de la siguiente forma (estilo
> survival) quiero_p <-c(NA,NA,'p',NA,NA,'p')
> quiero_s <-c(NA,NA,NA,'s','s',NA)
> entonces_quiero<-data.frame(x,y,quiero_p,quiero_s)
> entonces_quiero
> # funcion para el caso 's'
> ver <- function(x){
>         if (x=='s') {y <- 's'
>           return(y)}
>         else {y<-NA
>           return(y)}
>         }
> # pruebo la función para valores ingresados de a uno y a
> mano ver("p")
> ver("s")
> ver(1)
> ver(2)
> # los valores dados por la función ver son los
correctos.
> 
> 
> #youtube   ejemplo
> http://www.youtube.com/watch?v=WR8ftX-GJoE ceros <-
> function(x){if(x<3){x=0}else{x=1}}
> apply(entonces_quiero[,1:2], c(1,2), ceros) # pero no
> apply(entonces_quiero, c(1,2), ceros)
> 
> # probando mi función "ver" como la funcion "ceros"
(solo
> para la segunda columna. Me da un error
> apply(entonces_quiero[,2], c(1,2),ver)
> # también probe algo como  <-
> function(x){if(x=='s'){x=='s'}else{x==NA}} #
> # es algo medio tonto, documentado en todos lados, pero
> tengo un problema y no me doy cuenta
> # hoy me canse de cometer errores con esto
> 
>     [[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
> 
___________________________________________________________________________

Aviso:
==
El contenido del presente e-mail y sus posibles adjuntos pertenecen al INTA y pueden contener información confidencial. Si usted no es el destinatario original de este mensaje y por este medio pudo acceder a dicha información, por favor solicitamos contactar al remitente y eliminar el mensaje de inmediato. Se encuentra prohibida la divulgación, copia, distribución o cualquier otro uso de la información contenida en el presente e-mail por parte de personas distintas al destinatario. 


This e-mail contents and its possible attachments belong to INTA and may contain confidential information. If this message was not originally addressed to you, but you have accessed to such information by this means, please contact the sender and eliminate this message immediately. Circulation, copy, distribution, or any other use of the information contained in this e-mail is not allowed on part of those different from the addressee.


Antes de imprimir este mensaje, asegúrese de que sea necesario. Proteger el medio ambiente está también en su mano.



Más información sobre la lista de distribución R-help-es