For循环正在生成具有0值的额外组件
我编写了一个for循环来计算另一个(“货币”)的每个类别的一个变量(“值”)的总数。本质上,我想知道数据集中每种货币的总价值(“q4totalnetassets”) 我能够生成所需的输出,但输出包含一个值为0.000的额外组件,该组件不应位于向量中: 以下是我的“for循环”代码: 以下是我的数据:For循环正在生成具有0值的额外组件,r,loops,R,Loops,我编写了一个for循环来计算另一个(“货币”)的每个类别的一个变量(“值”)的总数。本质上,我想知道数据集中每种货币的总价值(“q4totalnetassets”) 我能够生成所需的输出,但输出包含一个值为0.000的额外组件,该组件不应位于向量中: 以下是我的“for循环”代码: 以下是我的数据: > q4totalnetassets[, c(1, 8, 9)] Country Value Currency 216 TOTAL
> q4totalnetassets[, c(1, 8, 9)]
Country Value Currency
216 TOTAL 8199900.6820 EUR
1956 Austria 79205.5520 EUR
3696 Belgium 76531.2991 EUR
5436 Bulgaria 795.5987 BGN
7176 Croatia 13857.6950 HRK
8916 Czech Republic 202580.4473 CZK
10656 Denmark 804999.1900 DKK
12396 France 762929.0000 EUR
14136 Germany 309851.7970 EUR
15876 Greece 4422.0000 EUR
17616 Hungary 148981.6908 HUF
19356 Ireland 1446873.0000 EUR
21096 Italy 226043.3900 EUR
22836 Liechtenstein 27902.8000 CHF
24576 Luxembourg 2946860.0000 EUR
26316 Malta 2737.3674 EUR
28056 Netherlands 34186.0000 EUR
29796 Poland 92855.8900 PLN
31536 Portugal 7577.3618 EUR
33276 Romania 20974.2320 RON
35016 Slovakia 3973.8010 EUR
36756 Slovenia 2308.6453 EUR
38496 Spain 185420.0000 EUR
40236 Switzerland 444451.1453 CHF
41976 Turkey 37598.8612 TRY
43716 United Kingdom 795221.1740 GBP
45456 Finland 78619.0081 EUR
47196 Sweden 2411741.0000 SEK
48936 Norway 904348.0000 NOK
关于为什么会出现额外的类别有什么想法吗?我们可以使用一种方法来代替
for
循环。使用data.table
,将“data.frame”转换为“data.table”(setDT(q4totalnetassets)
),按“货币”分组,我们得到“值”的总和,其中“国家”值不是“总计”
注:上述方法不会为“货币”中未使用的级别提供任何0值。关于for
循环,可能是评论中提到的未使用级别的问题 1-请不要添加结果的图片-只需将其显示为代码(与您目前的做法类似)。2-看看这是否解决了您的问题,请提出您的建议。
> q4totalnetassets[, c(1, 8, 9)]
Country Value Currency
216 TOTAL 8199900.6820 EUR
1956 Austria 79205.5520 EUR
3696 Belgium 76531.2991 EUR
5436 Bulgaria 795.5987 BGN
7176 Croatia 13857.6950 HRK
8916 Czech Republic 202580.4473 CZK
10656 Denmark 804999.1900 DKK
12396 France 762929.0000 EUR
14136 Germany 309851.7970 EUR
15876 Greece 4422.0000 EUR
17616 Hungary 148981.6908 HUF
19356 Ireland 1446873.0000 EUR
21096 Italy 226043.3900 EUR
22836 Liechtenstein 27902.8000 CHF
24576 Luxembourg 2946860.0000 EUR
26316 Malta 2737.3674 EUR
28056 Netherlands 34186.0000 EUR
29796 Poland 92855.8900 PLN
31536 Portugal 7577.3618 EUR
33276 Romania 20974.2320 RON
35016 Slovakia 3973.8010 EUR
36756 Slovenia 2308.6453 EUR
38496 Spain 185420.0000 EUR
40236 Switzerland 444451.1453 CHF
41976 Turkey 37598.8612 TRY
43716 United Kingdom 795221.1740 GBP
45456 Finland 78619.0081 EUR
47196 Sweden 2411741.0000 SEK
48936 Norway 904348.0000 NOK
library(data.table)
setDT(q4totalnetassets)[Country!="TOTAL",
.(Sums = sum(Value)), by = Currency]
# Currency Sums
# 1: EUR 6167538.2217
# 2: BGN 795.5987
# 3: HRK 13857.6950
# 4: CZK 202580.4473
# 5: DKK 804999.1900
# 6: HUF 148981.6908
# 7: CHF 472353.9453
# 8: PLN 92855.8900
# 9: RON 20974.2320
#10: TRY 37598.8612
#11: GBP 795221.1740
#12: SEK 2411741.0000
#13: NOK 904348.0000