簡體   English   中英

在R中使用DT包進行條件格式化

[英]Conditional Formatting Using DT Package in R

我正在嘗試使用R中的DT包復制Excel的條件格式。

在我的示例中,在下拉列表中選擇了足球俱樂部,並且其匹配項顯示在表格中。 我想根據俱樂部的結果突出顯示每一行。 挑戰在於俱樂部在不同比賽中主場比賽和客場比賽,因此代碼需要滿足這一要求。 行格式應如下所示:

  • 綠色為贏-如果選擇俱樂部已經取得了比對手更多
  • 灰色,平局-如果所選俱樂部的得分對手相同
  • 紅色代表虧損-如果所選俱樂部的得分低於對手

這是我到目前為止的代碼(在底部格式化)。 顯然,這是錯誤的,因此請不要過多注意它。 它所做的只是基於Home.Goals字段中特定數量的目標進行突出顯示。

output$match_cr <- DT::renderDataTable({

        match_cr <- match

        # Find home and away matches involving club selected from dropdown.  
        match_cr <- subset(
            match_cr,
            match_cr$Home.Club == input$club | match_cr$Away.Club == input$club
        )

        if (input$season != "All") {
            match_cr <- subset(
                match_cr,
                Season == input$season
            )
        }

        match_cr

        DT::datatable(match_cr,filter = 'top', options =
                          list(lengthMenu = list(c(-1, 10, 50, 100),
                                            list('All', 10, 50, 100)),
                               pageLength = -1), selection = 'none'

                      ) %>%
            formatStyle(
                          'Home.Goals', target = 'row',
                          backgroundColor = styleEqual(c(2, 1, 0),c('green', 'grey', 'red'))
                      )
    })

我會在match_cr增加一列,以指示所選俱樂部是否像這樣獲勝:

match_cr$win.selected = ifelse(((match_cr$Home.Club == input$club) & (match_cr$Home.Goals > match_cr$Away.Goals)) ||
                               ((match_cr$Away.Club == input$club) & (match_cr$Away.Goals > match_cr$Home.Goals)), 
                               2, 
                               ifelse(match_cr$Home.Goals == match_cr$Away.Goals, 1, 0))

您可以在您的subset()之后添加它。 然后您可以使用格式化數據表

formatStyle('win.selected', target = 'row',
            backgroundColor = styleEqual(c(2, 1, 0),c('green', 'grey', 'red'))
) 

編輯:將match_cr$添加到變量名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM