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.
Regards, Sophie
Creating Dummy Variables with if else phrase
3 messages · langensk@fas.harvard.edu, Achim Zeileis, Peter Dalgaard
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
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