【问题标题】:How to add comma and percentage sign to particular column in R如何在 R 中的特定列中添加逗号和百分号
【发布时间】:2020-12-10 19:00:27
【问题描述】:

我在 R 中有一个数据框,看起来像。

Date         Art        Bst     Cde       Fet       Drt
2020-04-02   100000     14.34   1223400   15.23     12.22
2020-04-04   150000     12.33   103400    11.14     01.22
2020-04-05   1700000    11.45   1000000   17.41     10.22

数据框的类别是[1] "data.table" "data.frame"。我想在第 2,4 列中的三位数后添加逗号,在第 3,5 和 6 列中添加 % 符号。

需要的输出:

Date         Art          Bst      Cde         Fet         Drt
2020-04-02   100,000      14.34 %  122,340,0   15.23 %     12.22 %
2020-04-04   150,000      12.33 %  103,400     11.14 %     01.22 %
2020-04-05   170,000,0    11.45 %  100,000,0   17.41 %     10.22 %

【问题讨论】:

    标签: r dataframe dplyr data.table tidyverse


    【解决方案1】:

    你可以这样使用base R

    #Code
    df$Art <- prettyNum(df$Art,big.mark = ',')
    df$Cde <- prettyNum(df$Cde,big.mark = ',')
    df$Bst <- paste0(df$Bst,' %')
    df$Fet <- paste0(df$Fet,' %')
    df$Drt <- paste0(df$Drt,' %')                            
    

    输出:

    df
            Date       Art     Bst       Cde     Fet     Drt
    1 2020-04-02   100,000 14.34 % 1,223,400 15.23 % 12.22 %
    2 2020-04-04   150,000 12.33 %   103,400 11.14 %  1.22 %
    3 2020-04-05 1,700,000 11.45 % 1,000,000 17.41 % 10.22 %
    

    使用的一些数据:

    #Data
    df <- structure(list(Date = c("2020-04-02", "2020-04-04", "2020-04-05"
    ), Art = c(100000L, 150000L, 1700000L), Bst = c(14.34, 12.33, 
    11.45), Cde = c(1223400L, 103400L, 1000000L), Fet = c(15.23, 
    11.14, 17.41), Drt = c(12.22, 1.22, 10.22)), class = "data.frame", row.names = c(NA, 
    -3L))
    

    【讨论】:

      【解决方案2】:

      我们可以使用来自formattablecommapercent

      library(dplyr)
      library(formattable)
      df2 <- df1 %>%
           mutate(across(c(Art, Cde), comma),
                   across(c(Bst, Fet, Drt), ~ percent(.)/100))
      

      -输出

      df2
      #  Date          Art    Bst          Cde    Fet    Drt
      #1 2020-04-02   100,000.00 14.34% 1,223,400.00 15.23% 12.22%
      #2 2020-04-04   150,000.00 12.33%   103,400.00 11.14%  1.22%
      #3 2020-04-05 1,700,000.00 11.45% 1,000,000.00 17.41% 10.22%
      

      数据

      df1 <- structure(list(Date = c("2020-04-02", "2020-04-04", "2020-04-05"
      ), Art = c(100000L, 150000L, 1700000L), Bst = c(14.34, 12.33, 
      11.45), Cde = c(1223400L, 103400L, 1000000L), Fet = c(15.23, 
      11.14, 17.41), Drt = c(12.22, 1.22, 10.22)), class = "data.frame", 
      row.names = c(NA, 
      -3L))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-06
        • 1970-01-01
        • 2016-03-30
        • 2013-10-03
        • 1970-01-01
        • 2020-05-08
        • 1970-01-01
        相关资源
        最近更新 更多