r-如何根据数据表中的特定行按组计算比率



我有以下结构的交易数据:

MWE <-data.table(
Exporter=rep(c("France","Germany","United States","World"),each=4),
Importer=rep(c("France","Germany","United States","World"),4),
Value=c(0,20,30,50,
30,0,40,70,
80,80,0,160,
110,100,70,280)
)
MWE
> MWE
Exporter      Importer Value
1:        France        France     0
2:        France       Germany    20
3:        France United States    30
4:        France         World    50
5:       Germany        France    30
6:       Germany       Germany     0
7:       Germany United States    40
8:       Germany         World    70
9: United States        France    80
10: United States       Germany    80
11: United States United States     0
12: United States         World   160
13:         World        France   110
14:         World       Germany   100
15:         World United States    70
16:         World         World   280

我想创建一个新的变量,即每个国家在一个国家的进口商中所占的份额。我无法使用sumN轻松地完成任务,因为我的真实数据中有不同的国家组(在我的示例中为World(。

所以基本上我想要一个新的变量,by Exporter, percent = value/value(World)。我该怎么做?

Desired_Output
Exporter      Importer Value   Percent
1:        France        France     0 0.0000000
2:        France       Germany    20 0.4000000
3:        France United States    30 0.6000000
4:        France         World    50 1.0000000
5:       Germany        France    30 0.4285714
6:       Germany       Germany     0 0.0000000
7:       Germany United States    40 0.5714286
8:       Germany         World    70 1.0000000
9: United States        France    80 0.5000000
10: United States       Germany    80 0.5000000
11: United States United States     0 0.0000000
12: United States         World   160 1.0000000
13:         World        France   110 0.3928571
14:         World       Germany   100 0.3571429
15:         World United States    70 0.2500000
16:         World         World   280 1.0000000

dplyr怎么样?因为你们已经包含了世界,所以你们需要将百分比提高一倍。只有始终如一地将世界包括在内,这才会奏效。否则,您可以使用if_else语句。

MWE %>% group_by(Exporter) %>%
mutate(2*Value/sum(Value))

最新更新