创建并组合2个grid.tables

时间:2018-01-17 10:19:06

标签: r dataframe grid grob

我创建了一个grid.table对象来显示PowerBi中的数据帧,下面是我的代码:

dataset <- data.frame(BDS_ID = c("001","002"),
                  PRIORITY = c("high","medium"),
                  STATUS = c("onair","onair"),
                  COMPANY = c("airfr","fly"))
my.result <- melt(dataset, id = c("BDS_ID"))

mytheme <- ttheme_default(base_size = 10,
                          core=list(fg_params=list(hjust=0, x=0.01),
                                    bg_params=list(fill=c("white", "grey90"))))

for (i in 1:nrow(tg)) {
  tg$grobs[[i]] <- editGrob(tg$grobs[[i]], gp=gpar(fontface="bold"))
}

grid.draw(tg)

这是我的输出:

enter image description here

我想通过以下方式改进输出:我希望行标题是唯一的,并且每个变量的每个不同值都有不同的列,每次重复列和行标题。

我尝试使用语句t(dataset)执行此操作,但由于不会重复行标题,因此无法获得所需的结果。

我想得到一个与此类似的输出(总是优等的grob):

**PRIORITY**  high   **PRIORITY**  medium
**STATUS**    onair  **STATUS**    onair
**COMPANY**   airfr  **COMPANY**   fly

有谁知道如何实现这个目标?

由于

1 个答案:

答案 0 :(得分:1)

我无法根据您提供的代码重现您显示的grob格式,但我有类似的东西:

dataset <- data.frame(BDS_ID = c("001","002"),
                  PRIORITY = c("high","medium"),
                  STATUS = c("onair","onair"),
                  COMPANY = c("airfr","fly"))
dataset <- data.frame(t(dataset))
dataset$label1 <- rownames(dataset)
dataset$label2 <- rownames(dataset)
colnames(dataset) <- c("status1", "status2", "label1", "label2")
dataset <- dataset[c(2:nrow(dataset)), c(3, 1, 4, 2)]
rownames(dataset) <- NULL

test <- grid.draw(tableGrob(dataset))

上面的代码生成以下对象。它看起来并不像你的那样,但它在你正在寻找的一般结构中:

output Grob