如何定位列并将其转换为百分比

How to target a column and convert it to percentage

我正在尝试将 count_contribution 列转换为百分比

这是我的代码

Combined%>%
   group_by(`Processing Server`)%>%
   summarise(Transaction_count = n(), Face_value = sum(FaceValue))%>%
   mutate(Count_contribution = Transaction_count/sum(Transaction_count))%>%
  fmt_percent(columns = Count_contribution,decimals = 1)

在Face_value栏中,我要添加货币

并且在计数列中,我想将 (,) 添加到计数

我希望它看起来像这样table

这是我在 markdown 中遇到的错误。

错误:data 的对象不是 gt_tbl 对象。

在应用 fmt_percent 或任何其他 gt 命令之前,使用 gt() 函数更改数据帧。您可以使用 fmt_number 为数字添加逗号。

mtcars为例。

library(dplyr)
library(gt)

mtcars %>%
  group_by(cyl)%>%
  summarise(Transaction_count = n() * 100, mpg = sum(mpg)) %>%
  mutate(Count_contribution = Transaction_count/sum(Transaction_count)) %>%
  gt() %>%
  fmt_percent(columns = Count_contribution,decimals = 1) %>%
  fmt_number(columns = Transaction_count)

我想您需要的只需 dplyr 即可完成。但是,如果您要将 table 导出到其他地方,Ronak 的 gt 使用指南就足够了。

library(dplyr)
##This is just to recreate your data set 
Combined <- structure(list(`Processing Server` = c("linode", "vpn-100", "vpn-45", "vpn-81", "vpn-98"), 
Transaction_count = c(2978, 324841, 9590, 131352, 150314),  
Face_value = c(557600, 108998381, 4975880, 55503635, 54759542)),  
row.names = c(NA, -5L),  class = c("tbl_df", "tbl","data.frame"))

##Using dplyr and base R's format function.. 
Combined %>% 
          mutate(Count_contribution = paste0(round(Transaction_count/sum(Transaction_count)*100,0),"%"),
                 Transaction_count=format(Transaction_count,big.mark=","),
                 Face_value=paste0("$",format(Face_value,big.mark=",",trim=T)))