“如何有条件地格式化数据表中的字母?

卡洛·以色列·桑切斯·拉马德里德

我是 R 的新手,我目前正在尝试制作一个表格,向我展示 2 天之间的变化,一旦计算出这种变化,如果它是负数,大海就会变成红色字母,如果不是,那么绿色

在此处输入图片说明


标题:“区域商业消费”输出:flexdashboard::flex_dashboard:方向:列

垂直布局:填充

################## librerias #####################
library(flexdashboard)
library(tidyverse)
library(readxl)
library(shiny)
library(formattable)
library(DT)
library(htmlTable)
library(sqldf)
library(ggplot2)
library(data.table)
library(dplyr)
library(tidyr)
library(shinydashboard)

##################  Datos   #######################
base1     <- read_excel("C:/Karlo disco duro/AVANCE.xlsx",sheet = "Base1")
base2     <- read_excel("C:/Karlo disco duro/AVANCE.xlsx",sheet = "Base2")
finmes <- read_excel("C:/Karlo disco duro/AVANCE.xlsx",sheet = "Finmes")

{宽度=20%} {宽度=6%}

每日安置的推进


Green0 = "#DeF7E9"
Green = "#71CA97"
Red = "#ff7f7f"

data1<-subset(base1,select = c("TipoCredito","SaldoCapital"))
data2<-subset(base2,select = c("TipoCredito","SaldoCapital"))
finmes1<-subset(finmes,select = c("TipoCredito","SaldoCapital"))
final1<-data.frame(sqldf(
  "select TipoCredito, sum(SaldoCapital) as SALDO from data1 group by TipoCredito"
))
final2<-data.frame(sqldf(
  "select TipoCredito, sum(SaldoCapital) as SALDO from data2 group by TipoCredito"
))
finmes2<-data.frame(sqldf(
  "select TipoCredito, sum(SaldoCapital) as SALDO from finmes1 group by TipoCredito"
))

tablaa<-data.frame(final1)
tablab<-data.frame(final2)
tablafinmes<-data.frame(finmes2)

final3<-data.frame(sqldf(
  "select A.TipoCredito, A.SALDO as '23Agosto', B.SALDO as '24Agosto', (B.SALDO - A.SALDO) as VARIACION
  from tablaa A
  join tablab B on A.TipoCredito = B.TipoCredito
  group by A.TipoCredito"
))

finalfinmes <- data.frame(sqldf(
  "select F.TipoCredito, F.SALDO as '31Julio', B.SALDO as '24Agosto', (B.SALDO - F.SALDO) as VARIACION
  from tablafinmes F
  join tablab B on F.TipoCredito = B.TipoCredito
  group by F.TipoCredito"
))

my.options <- list (autoWidth = FALSE,
                   searching = FALSE,
                   ordering = FALSE,
                   lengthChange = FALSE,
                   lengthMenu = FALSE,
                   pageLength = FALSE,
                   paging = FALSE,
                   info = FALSE)
##final<-formattable(final3,list(VARIACION = color_tile("red", "green")))

##final3.1<-formattable(final3, list(`VARIACION`=formatter("span", style = x ~ style(color = ifelse(x < 0, "red", "green")))))
##finalfinmes1<-formattable(finalfinmes, list(`VARIACION`=formatter("span", style = x ~ style(color = ifelse(x < 0, "red", "green")))))

Tablafinal<-datatable(final3,options = list(autoWidth = TRUE, columnDefs = 
                      list(list(width = '190px', targets = c(1,2,3,4))),pageLength = 7,searching = TRUE,
                   ordering = TRUE,
                   lengthChange = TRUE,
                   lengthMenu = FALSE,
                   pageLength = FALSE,
                   paging = FALSE,
                   info = FALSE), colnames = c('Tipo de credito','23 de Agosto','24 de Agosto', 'Variacion Diaria')) 

Tablafinalfinmes<-datatable(finalfinmes,options = list(autoWidth = TRUE, columnDefs = 
                      list(list(width = '190px', targets = c(1,2,3,4))),pageLength = 7,searching = TRUE,
                   ordering = TRUE,
                   lengthChange = TRUE,
                   lengthMenu = FALSE,
                   pageLength = FALSE,
                   paging = FALSE,
                   info = FALSE),colnames = c('Tipo de credito','31 de Julio','24 de Agosto', 'Variacion fin de mes'))
##%>% formatStyle('VARIACION',color = ifelse('VARIACION'>0,'Green','Red')))

##Tablafinal$VARIACION <- ifelse(Tablafinal$VARIACION < 0, 1, ifelse(Tablafinal$VARIACION > 0, 2,3))

Tablafinal1<- formatStyle(Tablafinal,
                        columns = c(4),
                        fontFamily = "Arial",
                        fontSize = "16px", 
                        color = ifelse('VARIACION'< -0,'#ed1c16','#0ca649'))
                       ## backgroundColor = styleEqual(c(1, 2,3), c('green', 'yellow','red')))
                        ##color = styleEqual(c(-1,0,1),c('green','blue','Yellow')))

Tablafinalfinmes1<- formatStyle(Tablafinalfinmes,
                        columns = c(4),
                        fontFamily = "Arial",
                        fontSize = "16px",
                        color = ifelse('VARIACION'< -0,'#ed1c16','#0ca649'))

Tablafinal1$VARIACION <- ifelse(Tablafinal1$VARIACION < 0, 1, 
                    ifelse(Tablafinal1$VARIACION > 0, 2))

ab <- Tablafinal1 %>% formatCurrency (c('X23Agosto','X24Agosto','VARIACION'), 's/ ') %>% formatStyle('TipoCredito',target = 'row',backgroundColor = styleEqual(c('CONSUMO NO REVOLVENTE','CONSUMO REVOLVENTE','HIPOTECARIO'),c('#f8fb63','#f8fb63','#f8fb63'))) %>% formatStyle('VARIACION',fontWeight = 'bold',fontSize = "13px") 

##ab1 <- ab %>% formatStyle(columns = c('VARIACION'),valueColumns = c('VARIACION'),target='row',Color = styleEqual(c(-1,1),
##                                                                      c('red','green')))

tf <- Tablafinalfinmes1 %>% formatCurrency (c('X31Julio','X24Agosto','VARIACION'),'s/ ')%>% formatStyle('TipoCredito',target = 'row',backgroundColor = styleEqual(c('CONSUMO NO REVOLVENTE','CONSUMO REVOLVENTE','HIPOTECARIO'),c('#f8fb63','#f8fb63','#f8fb63'))) %>% formatStyle('VARIACION',fontWeight = 'bold',fontSize = "13px")

##ui<- fluidPage (navlistPanel(tabPanel("Variacion Diaria",ab),
##                  tabPanel("Variacion Mensual")))
##ui<-formattable(ab, list(VARIACION = color_tile("red", "green")))
ui<- fluidPage (tabsetPanel(tabPanel("Variacion Diaria",ab),
              tabPanel("Variacion Mensual",tf)))

开始

行{.tabset} {width=80}

ui
阿伍德

目前,color = ifelse('VARIACION'< -0,'#ed1c16','#0ca649')正在评估字符串 VARIACION 是否小于 0。虽然这不是一个特别有意义的问题,但 R 确实将其评估为 FALSE(在所有情况下),因此结果以绿色打印。

更一般地说,您不想ifelse()在这种情况下使用改用类似的东西formatStyle('VARIACION', color = styleInterval(0, c("red", "green"))

这里的关键是styleInterval()定义间隔的切割点和颜色。当您放置一个切割点(例如在 0 处)和两种颜色时,它使用切割点之前的第一种颜色和切割点之后的第二种颜色。你可以有多个间隔(切点> 1)。您只需要比切割点多一种颜色(例如,尝试color = styleInterval(c(0,300000), c("red", "green","blue")))下面我的示例中的颜色)。

以下是从https://rstudio.github.io/DT/functions.html修改的工作示例

library(DT)
m = cbind(matrix(rnorm(60, 1e5, 1e6), 20), runif(20), rnorm(20, 100))
m[, 1:3] = round(m[, 1:3])
m[, 4:5] = round(m[, 4:5], 7)
colnames(m) = head(LETTERS, ncol(m))
head(m)

datatable(m) %>% 
  formatCurrency(c('A', 'C')) %>% 
  formatStyle('A',  color = styleInterval(0, c("red", "green")))

进一步注意,使用更合适的实现ifelse()仍然失败,因为它返回一个向量,而颜色选项不需要向量(因此它不会抛出错误,但也不会绘制)。所以再一次,不要ifelse()在这里使用

#this fails
datatable(m) %>% 
  formatCurrency(c('A', 'C')) %>% 
  formatStyle('A',  color = ifelse(m[,"A"] < 0, "red", "green"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jqGrid-根据日期值有条件地格式化单元格

来自分类Dev

有条件地格式化范围内的最大值

来自分类Dev

使用区分大小写的文本有条件地格式化整个工作表

来自分类Dev

如何基于引用“移动”单元格的间接公式有条件地格式化单元格

来自分类Dev

如何有条件地格式化多个范围的最大值

来自分类Dev

如何有条件地格式化包含在Tabstrip中的Kendo UI Grid行?

来自分类Dev

如果单元格包含文本,则有条件地格式化整行

来自分类Dev

有条件地格式化Tablix的某些单元格

来自分类Dev

有条件地格式化日志

来自分类Dev

在模板中使用if语句有条件地格式化kendo网格列问题

来自分类Dev

有条件地格式化Shiny中的rHandsontable中的空单元格

来自分类Dev

如何根据单元格的值有条件地格式化[gt]表中的单元格

来自分类Dev

如何有条件地格式化JavaFX ComboBoxTableCell标签

来自分类Dev

如何有条件地格式化Kendo UI网格单元格(取决于值)

来自分类Dev

如何有条件地格式化全行

来自分类Dev

根据其他单元格的值有条件地格式化单词

来自分类Dev

在相同条件下有条件地格式化多行

来自分类Dev

如何有条件地格式化表格中的所有行,以根据单元格值显示不同的颜色

来自分类Dev

有条件地格式化列中值的第一个实例

来自分类Dev

如何有条件地格式化图表上的数据点

来自分类Dev

如何仅将符合条件的第一行有条件地格式化?

来自分类Dev

如何根据F列的值有条件地格式化E列中的单元格?

来自分类Dev

方法中的正则表达式,用于有条件地格式化记录轨4

来自分类Dev

有条件地格式化 JSON

来自分类Dev

在 PHP 中,如何根据单元格值有条件地格式化一行

来自分类Dev

如果提取的值是 > 数值,我如何有条件地格式化?

来自分类Dev

有条件地格式化锚定到条件单元格的区域

来自分类Dev

循环以有条件地格式化多个工作表范围内的单元格

来自分类Dev

如何根据表单的状态有条件地格式化测试?

Related 相关文章

  1. 1

    jqGrid-根据日期值有条件地格式化单元格

  2. 2

    有条件地格式化范围内的最大值

  3. 3

    使用区分大小写的文本有条件地格式化整个工作表

  4. 4

    如何基于引用“移动”单元格的间接公式有条件地格式化单元格

  5. 5

    如何有条件地格式化多个范围的最大值

  6. 6

    如何有条件地格式化包含在Tabstrip中的Kendo UI Grid行?

  7. 7

    如果单元格包含文本,则有条件地格式化整行

  8. 8

    有条件地格式化Tablix的某些单元格

  9. 9

    有条件地格式化日志

  10. 10

    在模板中使用if语句有条件地格式化kendo网格列问题

  11. 11

    有条件地格式化Shiny中的rHandsontable中的空单元格

  12. 12

    如何根据单元格的值有条件地格式化[gt]表中的单元格

  13. 13

    如何有条件地格式化JavaFX ComboBoxTableCell标签

  14. 14

    如何有条件地格式化Kendo UI网格单元格(取决于值)

  15. 15

    如何有条件地格式化全行

  16. 16

    根据其他单元格的值有条件地格式化单词

  17. 17

    在相同条件下有条件地格式化多行

  18. 18

    如何有条件地格式化表格中的所有行,以根据单元格值显示不同的颜色

  19. 19

    有条件地格式化列中值的第一个实例

  20. 20

    如何有条件地格式化图表上的数据点

  21. 21

    如何仅将符合条件的第一行有条件地格式化?

  22. 22

    如何根据F列的值有条件地格式化E列中的单元格?

  23. 23

    方法中的正则表达式,用于有条件地格式化记录轨4

  24. 24

    有条件地格式化 JSON

  25. 25

    在 PHP 中,如何根据单元格值有条件地格式化一行

  26. 26

    如果提取的值是 > 数值,我如何有条件地格式化?

  27. 27

    有条件地格式化锚定到条件单元格的区域

  28. 28

    循环以有条件地格式化多个工作表范围内的单元格

  29. 29

    如何根据表单的状态有条件地格式化测试?

热门标签

归档