繁体   English   中英

通过两个数据帧的差异突出显示单元格 (R)

[英]Highlighting cells by difference of two data frames (R)

我的目标是获取两个数据框,找出它们之间的差异并突出显示不同的单元格。 我目前有一个可行的解决方案,即 colors 整行不同,但我只想突出显示不同的特定单元格。 这是我的数据框(数据框的图片显示不同的列名。这不是应该的,但是如果您将我的代码用于数据框并运行它,您将不会遇到此问题)

response <- c("Best overall", "Best overall", "Best overall", "Best overall", "Best overall", "Best overall", "Diease control", "Diease control", "Observed response", "Observed respone")
value <- c("cr", "pr", "sd", "pd", "NE", "NA", "yes", "no", "yes", "no")
drug <- c(0, 0, 2, 10, 0, 0, 0, 12, 2, 10)

ex_df <- data.frame(response, value)
ex_df <- data.frame(ex_df, drug)

response <- c("Best overall", "Best overall", "Best overall", "Best overall", "Best overall", "Best overall", "Diease control", "Diease control", "Observed response", "Observed respone")
value <- c("cr", "pr", "sd", "pd", "NE", "NA", "yes", "no", "yes", "no")
drug <- c(0, 0, 5, 9, 0, 0, 0, 11, 2, 10)

ex1_df <- data.frame(response, value)
ex1_df <- data.frame(ex1_df, drug)

在此处输入图像描述 在此处输入图像描述

我想要在这里着色的唯一内容是药物下的细胞与第一个数据框中药物下的细胞不同。 因此,在包含 drug1 的数据框中,我希望将包含值 5、9 和 11 的单元格着色为浅红色。 我的尝试使用anti_join:

missing <- ex1_df %>%
  anti_join(ex_df) %>%
  mutate(missing = TRUE)

ex_diff <- ex1_df %>%
  left_join(missing) %>%
  gt(rowname_col = "row", groupname_col = "group") %>%
  tab_style(style = list(cell_fill(color = "lightpink")),
            locations = cells_body(columns = everything(), rows = missing)) %>%
  cols_hide(missing)

ex_diff

这使 output 突出显示了整行,但我只想突出显示不同数字所在的单元格。

在此处输入图像描述

任何帮助都会很棒!

这应该有效:

    ex_diff <- ex1_df %>%
      left_join(missing) %>%
      gt(rowname_col = "row", groupname_col = "group") %>%
      tab_style(style = list(cell_fill(color = "lightpink")),
                locations = cells_body(columns = drug, rows = drug &   !is.na(missing))) %>%
 cols_hide(missing)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM