[R] Creating Dummy Variables with if else phrase
Peter Dalgaard BSA
p.dalgaard at biostat.ku.dk
Fri May 2 22:08:44 CEST 2003
langensk at fas.harvard.edu writes:
> 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 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.
is.real is true for all elements in x. You may have intended
!is.na(x[i]).
However, there are simpler ways, e.g.
0+outer(x,1:4,"==")
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 1 0 0
[3,] NA NA NA NA
[4,] 0 0 0 1
or simply use model formulas and code x as a factor.
--
O__ ---- Peter Dalgaard Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-help
mailing list