将绝对值转换为 R 中的年度百分比

Transform absolute values into yearly percentages in R

我有这样一个数据库:

Year   Type   Return
1900     A      4
1900     B      7
1901     A      87
1901     B      3
1902     A      9.7
1902     B      2

我想将 return 绝对值转换为年度百分比。

例如。对于 1900,我想要:

4/(4+7) = 0,36
7/(4+7) = 0,64

并且:

Year   Type   Return
1900     A      36%
1900     B      64%

真实数据库有>10k行的行。

如果Type总是seq A,B:

数据:

df <- data.frame(data.table::fread("Year Type Return
1900 A 4
1900 B 7
1901 A 87
1901 B 3
1902 A 9.7
1902 B 2"))

代码:

library(tidyverse)
df %>% 
  group_by(Year) %>% 
  summarise(Return = Return / sum(Return)) %>% 
  ungroup() %>% 
  mutate(Type = df$Type) %>% 
  relocate(Year, Type, Return) %>% 
  mutate(Return = round(Return, 2))

输出

   Year Type  Return
  <int> <chr>  <dbl>
1  1900 A       0.36
2  1900 B       0.64
3  1901 A       0.97
4  1901 B       0.03
5  1902 A       0.83
6  1902 B       0.17

更漂亮的输出:

df %>% 
  group_by(Year) %>% 
  summarise(Return = Return / sum(Return)) %>% 
  ungroup() %>% 
  mutate(Type = df$Type) %>% 
  relocate(Year, Type, Return) %>% 
  mutate(Return = scales::percent(Return))

   Year Type  Return
  <int> <chr> <chr> 
1  1900 A     36%   
2  1900 B     64%   
3  1901 A     97%   
4  1901 B     3%    
5  1902 A     83%   
6  1902 B     17%