R 比较两个数据帧的值

R 比较两个数据帧的值,r,kable,kableextra,flextable,officer,R,Kable,Kableextra,Flextable,Officer,我正在R中构建犯罪报告,并比较两个独立的数据帧,一个来自今年,另一个来自上一年。两者的数据结构相同。有没有一种方法可以根据前一年犯下的罪行来给flextable中的值着色?例如,如果2020年1月的凶杀案比2019年1月多,那么将该值涂成红色。如果2020年1月的入室盗窃案少于2019年1月,则将该值涂成绿色,以此类推,每年的每个月以及每一次犯罪。以下是数据示例: df2019 <- data.frame(crime = c("assault", "homic

我正在
R
中构建犯罪报告,并比较两个独立的数据帧,一个来自今年,另一个来自上一年。两者的数据结构相同。有没有一种方法可以根据前一年犯下的罪行来给flextable中的值着色?例如,如果2020年1月的凶杀案比2019年1月多,那么将该值涂成红色。如果2020年1月的入室盗窃案少于2019年1月,则将该值涂成绿色,以此类推,每年的每个月以及每一次犯罪。以下是数据示例:

df2019 <- data.frame(crime = c("assault", "homicide", "burglary"),
                 Jan = c(5, 2, 7),
                 Feb = c(2, 4, 0),
                 Mar = c(1, 2, 1))

df2020 <- data.frame(crime = c("assault", "homicide", "burglary"),
                 Jan = c(1, 2, 5),
                 Feb = c(1, 3, 0),
                 Mar = c(2, 2, 1))
df2019这里有一个解决方案:

library(flextable)
library(magrittr)

df2019 <- data.frame(crime = c("assault", "homicide", "burglary"),
                     Jan = c(5, 2, 7),
                     Feb = c(2, 4, 0),
                     Mar = c(1, 2, 1))

df2020 <- data.frame(crime = c("assault", "homicide", "burglary"),
                     Jan = c(1, 2, 5),
                     Feb = c(1, 3, 0),
                     Mar = c(2, 2, 1))

colors <- unlist(df2020[-1] - df2019[-1]) %>% 
  cut(breaks = c(-Inf, -.1, 0.1, Inf),
      labels = c("green", "transparent", "red")) %>% 
  as.character()

flextable(df2020) %>% 
  bg(j = ~ . -crime, bg = colors) %>% 
  theme_vanilla() %>% 
  autofit() %>% save_as_pptx(path = "test.pptx")

库(flextable)
图书馆(magrittr)
df2019%
bg(j=~-犯罪,bg=颜色)%>%
主题\u香草()%>%
autofit()%%>%另存为\u pptx(path=“test.pptx”)

谢谢您的快速回复,大卫!我复制并粘贴了您的解决方案,虽然它在flextable中很好地编译了数据,但颜色对我来说不起作用。知道为什么吗?没有。你是用PowerPoint打开文件的吗(没有LibreOffice或其他富文本编辑器)?是的,我是用PowerPoint打开的。flextable与您的相同,只是没有颜色。我复制并粘贴了您的解决方案,所以我想知道为什么会发生这种情况。看起来颜色没有显示的原因是
主题
代码行。当我把它拿出来的时候,它运行得非常好!非常感谢你,大卫!我改变了主题,我可能已经从白色背景改为透明背景,用最新的版本,你应该没有问题