Skip to content

Put one random row dataset to first cell variable

5 messages · Jan Sabee, Dimitris Rizopoulos, Jim Lemon

#
Dear useR help,
This is below my toy dataset,

   age married income gender
 young      no    low female
   old     yes    low female
   mid      no   high female
 young     yes   high female
   mid     yes   high female
   mid      no medium female
   old      no medium female
 young     yes medium female
   mid     yes    low   male
   old     yes    low   male
 young      no   high   male
   old      no   high   male
   mid     yes   high   male
 young     yes medium   male
   old     yes medium   male

and I take one random row (young,no,low,female) then I make like this
 
  age       <- c("young","mid","old")
  married   <- c("no","yes")
  income    <- c("low","high","medium")
  gender    <- c("female","male")

then I take one random row again (mid,yes,high,male), now

  age       <- c("mid","young","old")
  married   <- c("yes","no")
  income    <- c("high","low","medium")
  gender    <- c("male","female")

and etc, each I take one random row I put in the first cell in each
own variable.
Is this possible to make a simple function?

Sincerely,
Jan Sabee
#
maybe something like this could be helpful

f <- function(..., ref){
    lis <- list(...)
    for(i in seq(along=lis)){
        x <- lis[[i]]
        r <- match(ref[i], x)
        lis[[i]] <- x[c(r, seq(along=x)[-r])]
    }
    lis
}
#########
age <- c("young", "mid", "old")
married <- c("no", "yes")
income <- c("low", "high", "medium")
gender <- c("female", "male")

f(age, married, income, gender, ref=c("mid", "yes", "high", "male"))
f(age, married, income, gender, ref=c("old", "yes", "medium", "male"))


Best,
Dimitris

----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/16/336899
Fax: +32/16/337015
Web: http://www.med.kuleuven.ac.be/biostat/
     http://www.student.kuleuven.ac.be/~m0390867/dimitris.htm



----- Original Message ----- 
From: "Jan Sabee" <jan.sabee at gmail.com>
To: <R-help at stat.math.ethz.ch>
Sent: Wednesday, April 20, 2005 10:46 AM
Subject: [R] Put one random row dataset to first cell variable
#
Yes, this is exactly what I want.
Many thanks and best regards,

Jan Sabee
On 4/20/05, Dimitris Rizopoulos <dimitris.rizopoulos at med.kuleuven.ac.be> wrote:
#
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
#
Many thanks Jim.
This is the others kind of a random row which I can use.

Best wishes,
Jan Sabee