You can also automate it with this:

do.multirow<-function(df, which=1:ncol(df)){
    for(c in which){
        runs <- rle(as.character(df[,c]))
        if(all(runs$lengths>1)){
            tmp <- rep("", nrow(df))
            tmp[c(1, 1+head(cumsum(runs$lengths),-1))] <-
                    paste("\\multirow{",runs$lengths,"}{*}{",df[c(1,
1+head(cumsum(runs$lengths),-1)),c],"}",sep="")
            df[,c] <- tmp
        }
    }
    return(df)
}

This will replace the "which"-columns of data.frame "df" that have only
repeated entries in the "which"-columns of data.frame "df" with the
appropriate \multirow commands.

You then have to use print.xtable with sth like
print(xtable(do.multirow(df)),
        sanitize.text.function = function(x){
            return(x)
        }
)

	[[alternative HTML version deleted]]

