Skip to content
Prev 68116 / 398502 Next

Put one random row dataset to first cell variable

Jan Sabee wrote:
Assumptions:
1) the object is a data frame.
2) all variables are factors (although I have CMA).
3) you want a list containing vectors of the levels for each value in 
which the first level is the value in that row.

order.levels<-function(dfrow) {
  nvars<-dim(dfrow)[2]
  lslist<-sapply(dfrow,levels)
  for(i in 1:nvars) {
   if(is.factor(dfrow[,i])) {
    levelstrings<-levels(dfrow[1,i])
    whichlevel<-which(levelstrings==dfrow[1,i])
    lslist[[i]]<-c(levelstrings[whichlevel],levelstrings[-whichlevel])
   }
  }
  return(lslist)
}

Say your data frame is called toy.df:

nrows<-dim(toy.df)[1]
order.levels(toy.df[sample(1:nrows,1),])

Whether this is simple is debatable.

Jim