Hola Otto,

Creo que lo que necesitas es ifelse():

a <- c(1,2,3,12,13)
b <- c("a","b","c","d","e")
d <- data.frame(a, b)
d$X3 <- with(d, ifelse(a > 2, 5, -5))
d

Saludos,
Jorge.-


2012/6/3 Otto F. Wagner <>

> *
> *
> *
> *
> Hola, tengo una duda. Estoy intentando reproducir algo que hago a diario en
> SAS en el trabajo.
>
> Data tabla2;
> set tabla1;
> if var1>5 then var2="+5";
> else var2="-5";
> run;
>
> Estoy intentando hacer este ejemplo con R porque me gustaría replicar todo
> lo que sé de SAS en R.
>
> Sé que el IF de R no es vectorial pero por lo que he visto en internet se
> puede arreglar con un bucle. La función IFELSE me gusta menos porque creo
> que para anidar 3 o más if es poco esquemática. Otra alternativa sería usar
> sqldf pero como os decía en internet he visto el tema de mezclar bucles con
> IF.
>
> Os pongo lo que he hecho y el error porque no encuentro el fallo.
>
> a<-c(1,2,3,12,13)
> b<-c("a","b","c","d","e")
>
>
> Mi script:
>
> data<-(c(a ,b))
> dim(data)<-c(5,2)
> data<-data.frame(data)
> nrow(data)
>
>
>
>
> data$X3<-c("a","b","c","d","e") ## no sé si es necesario crear antes la
> columna pero por si las flies la creo
>
> for (i in 1:nrow(data)){if (data$X1[i]>5) {data$X3[i]<-"F"}}
>
>
> La consola de R:
> > for (i in 1:nrow(data)){if (data$X1[i]>5) {data$X3[i]<-"F"}}
> Error en if (data$X1[i] > 5) { :
>  valor ausente donde TRUE/FALSE es necesario
> Además: Mensajes de aviso perdidos
> In Ops.factor(data$X1[i], 5) : > not meaningful for factors
>
> Muchas gracias y saludos
>
> Otto F.
>
>        [[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]]

