For循环正在生成具有0值的额外组件

For循环正在生成具有0值的额外组件,r,loops,R,Loops,我编写了一个for循环来计算另一个(“货币”)的每个类别的一个变量(“值”)的总数。本质上,我想知道数据集中每种货币的总价值(“q4totalnetassets”) 我能够生成所需的输出,但输出包含一个值为0.000的额外组件,该组件不应位于向量中: 以下是我的“for循环”代码: 以下是我的数据: > q4totalnetassets[, c(1, 8, 9)] Country Value Currency 216 TOTAL

我编写了一个for循环来计算另一个(“货币”)的每个类别的一个变量(“值”)的总数。本质上,我想知道数据集中每种货币的总价值(“q4totalnetassets”)

我能够生成所需的输出,但输出包含一个值为0.000的额外组件,该组件不应位于向量中:

以下是我的“for循环”代码:

以下是我的数据:

> 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