我在 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))))
))))