[R] Creating Dummy Variables with if else phrase

Achim Zeileis zeileis at ci.tuwien.ac.at
Fri May 2 21:49:04 CEST 2003


On Friday 02 May 2003 21:41, langensk at fas.harvard.edu wrote:

> Dear All,
>
> I want to do 52 state dummy variables. In order to make it easier
> for me, I thought of using the below commands. (x is the vector with
> state variables, matrix will correspond to the dummy variables)
>
>
> x <- c(1,2,NA,4)
> matrix <- matrix(0,nrow=4,ncol=4)
>
> for (i in 1:4) {
> if (is.real(x[i])) {
> matrix[i,x[i]] <- 1 } else {
> matrix[i,] <- rep(NA,4)
> }
> }
>
> This gives me the following matrix:
>
> 1  0  0  0
> 0  1  0  0
> 0  0  0  0
> 0  0  0  1
>
> But I want it to look as follows:
>
> 1   0  0  0
> 0   1  0  0
> NA NA NA NA
> 0   0  0  1
>

I don't really understand why you want to create a matrix that way, 
but if you want to do it the way described above
  is.real(x[i])
seems to be the wrong function (because x is a real vector in the 
example above). If you want to test for NA you should use
  !is.na(x[i])
instead.
Z

> I want the forth row to be NA, but it is unchanged, i.e., 0. The
> second "else" phrase does not seem to work, and I cannot see what is
> wrong.
>
> I would be very grateful for your help.
>
> Regards, Sophie
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help



More information about the R-help mailing list