Can you merge cells in an xtable in R
I've got some data (the output of a ddply function) that I want to present in an xtable for use somewhere else.
calqc_table<-structure(list(RUNID = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L), ANALYTEINDEX = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L), ID = structure(1:11, .Label = c("Cal A", "Cal B", "Cal C",
"Cal D", "Cal E", "Cal F", "Cal G", "Cal H", "Cal High", "Cal Low",
"Cal Mid"), class = "factor"), m开发者_开发知识库ean_conc = c(200.619459644855,
158.264703128903, 102.469121407733, 50.3551544728544, 9.88296440865076,
4.41727762501703, 2.53494715706024, 1.00602831741361, 199.065054555735,
2.48063347296935, 50.1499780776199), sd_conc = c(2.3275711264554,
NA, NA, NA, NA, NA, NA, 0.101636943231162, 0, 0, 0), nrow = c(3,
1, 1, 1, 1, 1, 1, 3, 2, 2, 2)), .Names = c("RUNID", "ANALYTEINDEX",
"ID", "mean_conc", "sd_conc", "nrow"), row.names = c(NA, -11L
), class = "data.frame")
calqc_xtable<-xtable(calqc_table)
print(calqc_xtable,type="html")
which gives me the table in html format. However, I want to Merge together the content of the RUNID and ANALYTEINDEX columns vertically where the values are the same. Anyone know how to do that via xtable (or some other way ?)
I would "clean up" the original data frame replacing the values that are equal to the previous value by NA. xtable
will render these missing values as empty spaces. This will look good if you don't have horizontal border lines.
cleanf <- function(x){
oldx <- c(FALSE, x[-1]==x[-length(x)]) # is the value equal to the previous?
res <- x
res[oldx] <- NA
res}
Now we can apply this function to the columns that you want cleaned up:
clean.cols <- c( "RUNID", "ANALYTEINDEX")
calqc_table[clean.cols] <- lapply(calqc_table[clean.cols], cleanf)
精彩评论