Pergunta

Eu tenho alguns dados (a saída de uma função ddply) que eu quero apresentar em um xxtable para uso em outro lugar.

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")

o que me dá a tabela em formato HTML. No entanto, quero mesclar o conteúdo das colunas RunID e AnalyteIndex verticalmente onde os valores são os mesmos. Alguém sabe como fazer isso via Xtable (ou de alguma outra maneira?)

Foi útil?

Solução

Eu "limparia" o quadro de dados original, substituindo os valores iguais ao valor anterior por NA. xtable tornará esses valores ausentes como espaços vazios. Isso ficará bem se você não tiver linhas de fronteira horizontal.

cleanf <- function(x){ 
   oldx <- c(FALSE, x[-1]==x[-length(x)])  # is the value equal to the previous?
   res <- x
   res[oldx] <- NA        
   res}

Agora podemos aplicar esta função às colunas que você deseja limpar:

clean.cols <- c( "RUNID", "ANALYTEINDEX")
calqc_table[clean.cols] <- lapply(calqc_table[clean.cols], cleanf)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top