Suppose I have a data frame like "dat" below. For some context, this is the 
format that represents student's taking a computer adaptive test. first.item is 
the first item that student was administered and then score.1 is the student's 
response to that item and so forth.

item.pool <- paste("item", 1:10, sep = "")
set.seed(54321)
dat <- data.frame(id = c(1,2,3,4,5), first.item = sample(item.pool, 5, 
replace=TRUE),
                second.item = sample(item.pool, 5,replace=TRUE), third.item = 
sample(item.pool, 5,replace=TRUE),
                score1 = sample(c(0,1), 5,replace=TRUE), score2 = 
sample(c(0,1), 5,replace=TRUE), score3 = sample(c(0,1), 5,replace=TRUE))

I need to restructure this into a new format. The new matrix df (after the 
loop) is exactly what I want in the end. But, I'm annoyed at myself for not 
thinking of a more efficient way to restructure this without using a loop.

df <- matrix(NA, ncol = length(item.pool), nrow = nrow(dat))
colnames(df) <- unique(item.pool)

for(i in 1:5){
                for(j in 2:4){
                                rr <- which(dat[i,j] == colnames(df))
                                df[i,rr] <- dat[i, (j+3)]
                }
}

Any thoughts?

Harold

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to