关于dplyr:如何将一行数据转换为百分比? [R

How to convert a row of data to percent? R

本问题已经有最佳答案,请猛点这里访问。

这是我的数据集。

1
2
3
4
5
6
print(data)

          Month.2020        Jan     Feb   Mar      Apr   May     Jun      Jul
1   1st of Month Count     4248   4413    4534    4634   4621   4424    3323
2   Monthly Difference      NA     +165   +121    +100   -13    -197    -1101
3   Monthly Percent Change  NA     0.038  0.027   0.022  -0.002 -0.043  -0.249

我希望输出为

1
2
3
4
          Month.2020        Jan     Feb   Mar      Apr   May     Jun      Jul
1   1st of Month Count     4248   4413    4534    4634   4621   4424    3323
2   Monthly Difference      NA     +165   +121    +100   -13    -197    -1101
3   Monthly Percent Change  NA     3.8%   2.7%    2.2%   -0.2%  -4.3%   -24.9%

我尝试了以下操作,但没有成功

1
data[3,2:8] <- apply(data[5:7,2:5]*100, 2, function(x) paste0(x,"%"))

然后我尝试指定每个" Cell",但也没有起作用

1
data[3,3] <- paste("3.8%")


尝试一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
df[3,-c(1,2)] <- paste0(100*df[3,-c(1,2)],'%')

            Month.2020  Jan  Feb  Mar  Apr   May   Jun    Jul
1      1stofMonthCount 4248 4413 4534 4634  4621  4424   3323
2    MonthlyDifference   NA  165  121  100   -13  -197  -1101
3 MonthlyPercentChange   NA 3.8% 2.7% 2.2% -0.2% -4.3% -24.9%

#Data
df <- structure(list(Month.2020 = c("1stofMonthCount","MonthlyDifference",
"MonthlyPercentChange"), Jan = c(4248L, NA, NA), Feb = c(4413,
165, 0.038), Mar = c(4534, 121, 0.027), Apr = c(4634, 100, 0.022
), May = c(4621, -13, -0.002), Jun = c(4424, -197, -0.043), Jul = c(3323,
-1101, -0.249)), row.names = c(NA, -3L), class ="data.frame")


您可以使用:

1
df[3, 2:8] <- sapply(df[3, 2:8], function(x) scales::percent(x, big.mark = 1, accuracy = 0.1))