2

我在 R 中有一个水平数据框,需要根据行对其进行条件格式化。使用可格式化区域功能,我可以为整行着色,但无法根据其他行中的值对其进行格式化。

如果我之前转置我的数据框,我可以根据需要对其进行有条件的格式化,但是,我似乎无法在保持格式的同时将其转回。

该示例仅列出了我拥有的一些列,但应该说明问题。

我需要根据 Max、Upper_Quartile 等有条件地格式化“CurrentPrice”。稍后我需要使用输出将其附加到报告中。

library(formattable)
Q3 = c(1.31, 0.499, 0.1500, -0.05, -0.85,-1)
Q4 = c(3.31, 0.499, 0.1500, -0.05, -0.85,-0.2)
Q2 = c(4.31, 0.499, 0.1500, -0.05, -0.85,5)
Q1 = c(5.31, 0.499, 0.1500, -0.05, -0.85,2.3)

stats = data.frame(Q3,Q4,Q2,Q1)

rownames(stats)<-c('Max','Upper_Quartile','Median','Lower_Quartile','Min', "CurrentPrice")

formattable(stats, list(
  area(row = 6) ~ formatter("span", 
                            style =  ~ style("background-color" =  "lightgreen"
                            ))))

tStats <- t(stats)
tStats <- as.data.frame.matrix(tStats) 

formattable(tStats, list(
  CurrentPrice = formatter("span", 
                           style =  ~ style("background-color" = 
                                              ifelse(Min >= CurrentPrice, "lightgreen", 
                                                     ifelse(Max <= CurrentPrice, "red", 
                                                            ifelse( Lower_Quartile >= CurrentPrice, "aquamarine", 
                                                                    ifelse( Upper_Quartile <= CurrentPrice, "darkorange", NA))))
                           ))))

行格式化

正确的列

4

0 回答 0