我有一些数据(ddply函数的输出),我想在xtable中显示,以便在其他地方使用。
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"), mean_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")
以html格式提供表格。但是,我希望在值相同的情况下将RUNID和ANALYTEINDEX列的内容垂直合并在一起。任何人都知道如何通过xtable(或其他方式?)
答案 0 :(得分:3)
我会“清理”原始数据框,用NA替换等于前一个值的值。 xtable
会将这些缺失值渲染为空格。如果您没有水平边框线,这将看起来不错。
cleanf <- function(x){
oldx <- c(FALSE, x[-1]==x[-length(x)]) # is the value equal to the previous?
res <- x
res[oldx] <- NA
res}
现在我们可以将此功能应用于您想要清理的列:
clean.cols <- c( "RUNID", "ANALYTEINDEX")
calqc_table[clean.cols] <- lapply(calqc_table[clean.cols], cleanf)