【问题标题】:Converting Dataframe in Required Html Table format in R在 R 中以所需的 Html 表格式转换数据框
【发布时间】:2018-05-06 12:44:45
【问题描述】:

我在下面提到了数据框:

structure(list(Month = c("May-17", "A", "B", "C", "D", "E", "Apr-17", 
"A", "B", "C", "D", "E", "Mar-17", "A", "B", "C", "D", "E"), 
    No = c(75L, 10L, 15L, 12L, 18L, 20L, 75L, 9L, 12L, 10L, 19L, 
    25L, 72L, 8L, 13L, 9L, 18L, 24L), `Inc_%` = c("0.00%", "11.11%", 
    "25.00%", "20.00%", "-5.26%", "-20.00%", "4.17%", "12.50%", 
    "-7.69%", "11.11%", "5.56%", "4.17%", "0.00%", "0.00%", "0.00%", 
    "0.00%", "0.00%", "0.00%"), Total = c("34,500", "1,000", 
    "1,500", "2,500", "4,500", "25,000", "36,500", "1,100", "1,200", 
    "2,200", "4,000", "28,000", "35,000", "1,000", "1,100", "2,000", 
    "3,900", "27,000"), `Inc_%2` = c("-5.48%", "-9.09%", "25.00%", 
    "13.64%", "12.50%", "-10.71%", "4.29%", "10.00%", "9.09%", 
    "10.00%", "2.56%", "3.70%", "0.00%", "0.00%", "0.00%", "0.00%", 
    "0.00%", "0.00%"), Mean = c("28,200", "800", "1,200", "2,200", 
    "4,000", "20,000", "6,47,289", "7,57,991", "5,18,091", "6,95,407", 
    "1,68,428", "9,10,521", "7,38,687", "5,87,810", "8,05,300", 
    "7,67,826", "1,84,875", "11,73,866"), A = c(56L, 11L, 15L, 
    19L, 10L, 1L, 50L, 10L, 10L, 10L, 10L, 10L, 56L, 11L, 15L, 
    19L, 10L, 1L), Sum_A = c("27,800", "800", "1,000", "2,000", 
    "4,000", "20,000", "32,500", "1,000", "1,000", "2,000", "3,500", 
    "25,000", "31,800", "800", "1,000", "1,500", "3,500", "25,000"
    ), B = c(19L, 5L, 9L, 2L, 3L, 0L, 25L, 5L, 5L, 5L, 5L, 5L, 
    16L, 5L, 9L, 2L, 0L, 0L), Sum_B = c("6,700", "200", "500", 
    "500", "500", "5000", "4,000", "100", "200", "200", "500", 
    "3,000", "3,200", "200", "100", "500", "400", "2,000"), `%` = c("20.00%", 
    "12.00%", "22.50%", "10.50%", "11.50%", "16.20%", "20.20%", 
    "10.20%", "15.50%", "14.20%", "18.20%", "18.00%", "15.00%", 
    "10.20%", "13.20%", "14.50%", "15.00%", "11.20%"), Day = c(12L, 
    10L, 8L, 7L, 5L, 12L, 10L, 8L, 9L, 7L, 8L, 8L, 10L, 8L, 9L, 
    7L, 8L, 8L)), class = "data.frame", row.names = c(NA, -18L
))

我想将其转换为 html 表格格式,如下所示,或者你们可以建议任何好的格式:

我无法将小于 1 的 A、B、C、D 和 E 的字体大小转换为正常大小(正常字体大小 = 11)以及格式中所示的斜体和边框。

【问题讨论】:

    标签: css r html-table kable kableextra


    【解决方案1】:

    您可以使用来自knitrkablekableExtra-package:

    kable(my_df, "html", table.attr = 'style = "border-collapse: collapse;"') %>% 
      # for left alignment
      kable_styling(position = "left") %>%  
      # header row in orange
      row_spec(0, background = "orange") %>% # header row in orange
      # All rows equal A, B, C, D, or E are italic and one font size smaller
      row_spec(which(my_df$Month %in% LETTERS[1:5]), font_size = 10, italic = T) %>% 
      # All other rows are yellow and bold
      row_spec(which(!my_df$Month %in% LETTERS[1:5]), background = "yellow", bold = T) %>% 
      # All cells get a border
      row_spec(0:nrow(my_df), extra_css = "border: 1px solid black;")
    

    【讨论】:

    • 谢谢...寄宿生不见了,当我运行代码时,我的所有行都变成了黄色,除了第一行。由于我不知道这个包,你能告诉我如何添加标题。
    • 我正在使用这些 html 表格通过library(mailR) 发送电子邮件,并且在电子邮件中表格的对齐方式是居中,我希望它左对齐。
    • 您运行了代码并得到了与我不同的输出?您是否使用了与您提供的完全相同的示例?要修改解决方案,您可能需要查看 kableExtra 的文档
    • 是的...我正在使用相同的示例数据框。
    • 了解错误,您已经通过 row_spec(which(my_df$Month %in% LETTERS[1:5]) 识别了其他 5 行,考虑到只有 1 个字母,但在我的原始数据框中,字母从 3 到 13 不等。
    猜你喜欢
    • 2015-11-30
    • 2021-04-25
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多