saschaview wrote on 12/01/2011 12:30:18 PM: > Hello > > I have a data frame, x, holding 5 persons answering the question which > cars they have used: > > # the data frame > x <- as.data.frame( > matrix( > c('BMW', '', '', > 'Mercedes', 'VW', '', > 'Skoda', 'VW', 'BMW', > '', '', '', > 'VW', 'Skoda', '' > ), > ncol=3, > dimnames=list( > NULL, > paste( 'v', 1:3, sep='' ) > ) > ) > ) > > How do I transform this data frame to a data frame stating whether they > have used the presented car: > > BMW Mercedes VW Skoda > 1 T F F F > 2 F T T F > 3 T F T T > 4 F F F F > 5 F F T T > > My idea was to first find all levels by: > > v <- unique(unlist(lapply(x, levels))) > > But then I am stuck. > > Thanks for help, *S* > > -- > Sascha Vieweg, saschav...@gmail.com
Try this: uniq.cars <- sort(unique(unlist(x))) y <- t(apply(x, 1, function(xrow) match(uniq.cars, unique(xrow)))) dimnames(y)[[2]] <- uniq.cars y2 <- !is.na(y[, -1]) y2 Jean [[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.