首页 > 解决方案 > 如何在R中的数据框中添加最后一行作为总计

问题描述

我在 R 中有以下提到的列:

structure(list(product = c("-", "A", "B", "CC", "XA", "RD", 
"IS", "FD"), count.1 = c(969, 324, 11, 161, 185, 79, 231, 9), 
    Per.1 = c(49.21, 16.46, 0.56, 8.18, 9.4, 4.01, 11.73, 
    0.46), remark = c("F2", "", "F1", "NA", "K4", "-", 
    "-", "-"), count.2 = c("1708", "215", "35", "9", "2", "-", 
    "-", "-"), per.2 = c(86.74, 10.92, 1.78, 0.46, 0.1, 
    NA, NA, NA), status = c("Go", "hold", "-", "-", "-", "-", "-", 
    "-"), count.3 = c("1717", "200", "52", "-", "-", "-", "-", 
    "-"), per.3 = c(87.2, 10.16, 2.64, NA, NA, NA, NA, 
    NA)), .Names = c("product", "count.1", "per.1", "remark", 
"count.2", "per.2", "status", "count.3", "per.3"
), row.names = c(NA, -8L), class = c("data.table", "data.frame"
), .internal.selfref = <pointer: 0x185b2f8>)

我想从第 2 列到第 9 列求和,并%在第 3,6 列和第 9 列中添加符号。

请求输出如:

product   count.1 per.1   remark   count.1  per.2     Status  count.3  per.3           
-         969     49.21%   F2      1708     86.74%      Go    1717     87.20%
A         324     16.46%           215      10.92%      Hold  200      10.16%
B         11      0.56%    F1      35       1.78%       -     52       2.64%
CC        161     8.18%    NA      9        0.46%       -     -        NA
XA        185     9.40%    K4      2        0.10%       -     -        NA
RD        79      4.01%     -      -        NA          -     -        NA
IS        231     11.73%    -      -        NA          -     -        NA
RD        9       0.46%     -      -        NA          -     -        NA
Total     1969    100.01%   -      1969    100.00%      -     1969     100.00%  

标签: rdataframedplyr

解决方案


在每个百分比字段中添加百分比的解决方案。

total_df <- d %>% mutate_at(vars(2:3,5:6,8:9), as.numeric) %>% select_if(is.numeric) %>%
  summarise_all(sum, na.rm =T) %>% mutate_all(as.character) %>% 
  mutate(product = "Total", remark = '-',status ='-') %>% 
  select(names(d)) 

d %>% mutate_all(as.character) %>% bind_rows(total_df) %>% 
  mutate_at(vars(starts_with("per")), ~paste0(., '%'))

输出

  product count.1   per.1 remark count.2  per.2 status count.3  per.3
1       -     969  49.21%     F2    1708 86.74%     Go    1717  87.2%
2       A     324  16.46%            215 10.92%   hold     200 10.16%
3       B      11   0.56%     F1      35  1.78%      -      52  2.64%
4      CC     161   8.18%     NA       9  0.46%      -       -    NA%
5      XA     185    9.4%     K4       2   0.1%      -       -    NA%
6      RD      79   4.01%      -       -    NA%      -       -    NA%
7      IS     231  11.73%      -       -    NA%      -       -    NA%
8      FD       9   0.46%      -       -    NA%      -       -    NA%
9   Total    1969 100.01%      -    1969   100%      -    1969   100%

推荐阅读