2017-09-14 8 views
4

R Shiny Appで再作成する必要があるMicrosoft Excelのテーブルがあります。 Rの書式設定は、元の文脈と少なくともほぼ同じままでなければなりません。R Shiny DataTableをMicrosoft Excelテーブルのようにフォーマットする方法

表1

Excel Table 1

表2

Excel Table 2

注意書式:

ここで元の表の画像であり表ヘッダーの下の行と合計の合計、ヘッダーと合計が太字で表示され、Monthly Bill列の数字はコンマで区切られ、ドル記号が付いています。

行が私は少なくとも、選択されたトピック、ヘッダー、および合計を太字にし、Monthly Bill列の正しい数値書式を取得できるようにする必要があります。

私はDTパッケージを使用しようとしましたが、列の代わりに行の書式を設定する方法がわかりません。私は、DTがJavaScript関数用のラッパーを使用していることに気付きましたが、私自身はJavaScriptを個人的に知っていません。 RのパッケージやJavascriptで必要な方法でこれをフォーマットする方法はありますか?

編集:それは簡単なことであろうが、私は単に数字のいくつかは、ユーザーの入力にリンクされようとしているので、テーブルの画像を含めることはできませんし、更新する能力を持っている必要があります

+0

静的テーブル出力の場合は、「pander」、「xtable」、または「knitr :: kable」&「knitrExtra」のいずれかのパッケージをチェックアウトします。また、この回答はあなたを開始させるかもしれません:https://stackoverflow.com/questions/10587621/how-to-print-to-paper-a-nicely-formatted-data-frame – cmaher

答えて

2

pixiedustセル固有のカスタマイズを行うことが容易になります。

T1 <- data.frame(Charge = c("Environmental", "Base Power Cost", 
          "Base Adjustment Cost", "Distribution Adder", 
          "Retail Rate Without Fuel", "Fuel Charge Adjustment", 
          "Retail Rate With Fuel"), 
       Summer = c(0.00303, 0.06018, 0.00492, 0.00501, 0.07314, 
          0.02252, 0.09566), 
       Winter = c(0.00303, 0.05707, 0.00468, 0.01264, 0.07742, 
          0.02252, 0.09994), 
       Transition = c(0.00303, 0.05585, 0.00459, 0.01264, 
           0.07611, 0.02252, 0.09863), 
       stringsAsFactors = FALSE) 

T2 <- data.frame(Period = c("Summer", "Winter", "Transition", "Yearly Bill"), 
       Rate = c(0.09566, 0.09994, 0.09863, NA), 
       Monthly = c(118.16, 122.44, 121.13, 1446.92), 
       stringsAsFactors = FALSE) 

library(shiny) 
library(pixiedust) 
library(dplyr) 
options(pixiedust_print_method = "html") 

shinyApp(
    ui = 
    fluidPage(
     uiOutput("table1"), 
     uiOutput("table2") 
    ), 

    server = 
    shinyServer(function(input, output, session){ 

     output$table1 <- 
     renderUI({ 
      dust(T1) %>% 
      sprinkle(rows = 1, 
        border = "bottom", 
        part = "head") %>% 
      sprinkle(rows = c(5, 7), 
        cols = 2:4, 
        border = "top") %>% 
      sprinkle(rows = c(5, 7), 
        bold = TRUE) %>% 
      sprinkle(pad = 4) %>% 
      sprinkle_colnames(Charge = "") %>% 
      print(asis = FALSE) %>% 
      HTML() 
     }) 

     output$table2 <- 
     renderUI({ 
      T2 %>% 
      mutate(Monthly = paste0("$", trimws(format(Monthly, big.mark = ",")))) %>% 
      dust() %>% 
      sprinkle(rows = 1, 
        border = "bottom", 
        part = "head") %>% 
      sprinkle(rows = 4, 
        cols = 1, 
        bold = TRUE) %>% 
      sprinkle(rows = 4, 
        cols = 3, 
        border = "all") %>% 
      sprinkle(na_string = "", 
        pad = 4) %>% 
      sprinkle_colnames(Period = "", 
           Monthly = "Monthly Bill") %>% 
      print(asis = FALSE) %>% 
      HTML() 

     }) 

    }) 
) 
1

データの例を示したにもかかわらずDTとすると、formatStyleを使用して行と列の書式を変更できるはずです。太字の最初の行にたとえば、(データフレームがdfと呼ばれていると仮定した場合)、以下を参照してください。

df %>% 
    datatable() %>% 
    formatStyle(
    0, 
    target = "row", 
    fontWeight = styleEqual(1, "bold") 
) 

rstudio DTページには、より多くの例を提供しています:http://rstudio.github.io/DT/010-style.html

はまた、私はあなたがより良いかもしれないと思いますパッケージを使用してオフにします。

ベースプロットは、希望の結果と非常によく似ています。

あなたが始めるだろう
stargazer::stargazer(df, type = "html", title = "Table 1") 

が、より多くの柔軟性のためにここを参照してください:https://www.jakeruss.com/cheatsheets/stargazer/

関連する問題