R 如何将一列乘以另一列的动态值?

R 如何将一列乘以另一列的动态值?,r,for-loop,dplyr,R,For Loop,Dplyr,我有两个df的,一个是按月计算的值,另一个是按年计算的权重。我想用每个月的值乘以相应年份的权重 我有2010年1月到2020年8月的数据。我试图使用xts,但它只是第一个月的倍数。我能做些什么来解决这个问题 我的重量dput: structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34.4047080126754, 32.7172573747916, 30.6161439261264, 30.7788857122934, 33.795078161275

我有两个
df的
,一个是按月计算的值,另一个是按年计算的权重。我想用每个月的值乘以相应年份的权重

我有2010年1月到2020年8月的数据。我试图使用
xts
,但它只是第一个月的倍数。我能做些什么来解决这个问题

我的重量
dput

structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34.4047080126754, 
32.7172573747916, 30.6161439261264, 30.7788857122934, 33.7950781612753, 
38.8198000487686, 35.4479688369505, 30.795545527331, 30.795545527331, 
30.795545527331, 30.795545527331, 30.795545527331, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0), index = structure(c(1262304000, 1293840000, 
1325376000, 1356998400, 1388534400, 1420070400, 1451606400, 1483228800, 
1514764800, 1546300800, 1577836800, 1609459200), tzone = "UTC", tclass = "Date"), class = c("xts", 
"zoo"), .Dim = c(12L, 3L), .Dimnames = list(NULL, c("Carvão mineral", 
"Minerais não-metálicos", "Petróleo, gás natural e serviços de apoio"
)))
structure(c(90.6396989456161, 84.0613068812432, 94.6447239178692, 
92.7542716426195, 97.2115579911211, 97.8381908990013, 104.569346559379, 
104.440703385128, 103.402512486127, 102.224120421754, 99.045226137625, 
101.397487513874, 96.8256284683686, 90.2070352386239, 93.9874375693675, 
95.9522613762488, 102.192964761376, 102.076381798002, 107.267336293008, 
107.257788568258, 103.645728357381, 103.631155660378, 103.805024972253, 
103.597487513874, 84.457789955605, 90.368342119867, 96.956784128746, 
95.761809100999, 105.614572697003, 102.197989733629, 106.200502219756, 
106.574371531632, 100.293466981132, 112.208039678136, 96.6427136514985, 
102.568844339623, 89.5346739733631, 82.6613068812432, 85.7110557713653, 
87.6969852941178, 94.8974875138736, 97.1547738623753, 103.174371531632, 
104.474371531632, 97.2000000000002, 106.629145394007, 102.171859045505, 
100.064321587126, 95.8713568257493, 85.3758795782465, 95.7472364039957, 
95.9000000000001, 103.621607935627, 102.250251109878, 108.933668146504, 
112.324120421754, 108.631155660378, 113.459798834628, 106.247738623752, 
109.121105715871, 90.6396989456161, 84.0613068812432, 94.6447239178692, 
92.7542716426195, 97.2115579911211, 97.8381908990013, 104.569346559379, 
104.440703385128, 103.402512486127, 102.224120421754, 99.045226137625, 
101.397487513874, 96.8256284683686, 90.2070352386239, 93.9874375693675, 
95.9522613762488, 102.192964761376, 102.076381798002, 107.267336293008, 
107.257788568258, 103.645728357381, 103.631155660378, 103.805024972253, 
103.597487513874, 84.457789955605, 90.368342119867, 96.956784128746, 
95.761809100999, 105.614572697003, 102.197989733629, 106.200502219756, 
106.574371531632, 100.293466981132, 112.208039678136, 96.6427136514985, 
102.568844339623, 89.5346739733631, 82.6613068812432, 85.7110557713653, 
87.6969852941178, 94.8974875138736, 97.1547738623753, 103.174371531632, 
104.474371531632, 97.2000000000002, 106.629145394007, 102.171859045505, 
100.064321587126, 95.8713568257493, 85.3758795782465, 95.7472364039957, 
95.9000000000001, 103.621607935627, 102.250251109878, 108.933668146504, 
112.324120421754, 108.631155660378, 113.459798834628, 106.247738623752, 
109.121105715871, 165.763771576311, 151.472311910598, 168.854440604357, 
167.01494030152, 172.566095042522, 165.278910760377, 171.245703490676, 
173.005078675003, 161.715874268151, 167.370633868768, 169.164858518633, 
182.349525211683, 177.289636413718, 155.287062174998, 172.942860603901, 
165.57948196148, 173.580501842325, 172.873069603743, 173.862508830951, 
171.994459838177, 169.613581901888, 175.855080325953, 176.541789876917, 
185.284535064393, 186.406738740301, 171.699930121725, 174.417747407092, 
163.872357926782, 172.113751272419, 166.397768544, 170.952183056081, 
169.545822051413, 158.11329959031, 170.395638330209, 167.443226012601, 
178.312765639496, 174.175143485261, 154.998922814227, 159.313917848059, 
158.79737063505, 169.424496986474, 173.000079912105, 168.825964328539, 
171.133589234327, 171.992673103431, 175.419528662589, 171.244236480227, 
179.590587893763, 174.848849204677, 161.09792093833, 180.575597173093, 
176.570773004147, 186.333954561173, 184.94640453128, 193.152978105855, 
198.244306242776, 193.85527669408, 203.792127163977, 194.393862208802, 
212.217706501233), class = c("xts", "zoo"), index = structure(c(1262304000, 
1264982400, 1267401600, 1270080000, 1272672000, 1275350400, 1277942400, 
1280620800, 1283299200, 1285891200, 1288569600, 1291161600, 1293840000, 
1296518400, 1298937600, 1301616000, 1304208000, 1306886400, 1309478400, 
1312156800, 1314835200, 1317427200, 1320105600, 1322697600, 1325376000, 
1328054400, 1330560000, 1333238400, 1335830400, 1338508800, 1341100800, 
1343779200, 1346457600, 1349049600, 1351728000, 1354320000, 1356998400, 
1359676800, 1362096000, 1364774400, 1367366400, 1370044800, 1372636800, 
1375315200, 1377993600, 1380585600, 1383264000, 1385856000, 1388534400, 
1391212800, 1393632000, 1396310400, 1398902400, 1401580800, 1404172800, 
1406851200, 1409529600, 1412121600, 1414800000, 1417392000), tzone = "UTC", tclass = c("POSIXct", 
"POSIXt")), .Dim = c(60L, 3L), .Dimnames = list(NULL, c("Carvão.Mineral", 
"Minerais.não.metálicos", "Petróleo..gás.natural.e.serviços.de.apoio"
)))
我的数据
dput

structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34.4047080126754, 
32.7172573747916, 30.6161439261264, 30.7788857122934, 33.7950781612753, 
38.8198000487686, 35.4479688369505, 30.795545527331, 30.795545527331, 
30.795545527331, 30.795545527331, 30.795545527331, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0), index = structure(c(1262304000, 1293840000, 
1325376000, 1356998400, 1388534400, 1420070400, 1451606400, 1483228800, 
1514764800, 1546300800, 1577836800, 1609459200), tzone = "UTC", tclass = "Date"), class = c("xts", 
"zoo"), .Dim = c(12L, 3L), .Dimnames = list(NULL, c("Carvão mineral", 
"Minerais não-metálicos", "Petróleo, gás natural e serviços de apoio"
)))
structure(c(90.6396989456161, 84.0613068812432, 94.6447239178692, 
92.7542716426195, 97.2115579911211, 97.8381908990013, 104.569346559379, 
104.440703385128, 103.402512486127, 102.224120421754, 99.045226137625, 
101.397487513874, 96.8256284683686, 90.2070352386239, 93.9874375693675, 
95.9522613762488, 102.192964761376, 102.076381798002, 107.267336293008, 
107.257788568258, 103.645728357381, 103.631155660378, 103.805024972253, 
103.597487513874, 84.457789955605, 90.368342119867, 96.956784128746, 
95.761809100999, 105.614572697003, 102.197989733629, 106.200502219756, 
106.574371531632, 100.293466981132, 112.208039678136, 96.6427136514985, 
102.568844339623, 89.5346739733631, 82.6613068812432, 85.7110557713653, 
87.6969852941178, 94.8974875138736, 97.1547738623753, 103.174371531632, 
104.474371531632, 97.2000000000002, 106.629145394007, 102.171859045505, 
100.064321587126, 95.8713568257493, 85.3758795782465, 95.7472364039957, 
95.9000000000001, 103.621607935627, 102.250251109878, 108.933668146504, 
112.324120421754, 108.631155660378, 113.459798834628, 106.247738623752, 
109.121105715871, 90.6396989456161, 84.0613068812432, 94.6447239178692, 
92.7542716426195, 97.2115579911211, 97.8381908990013, 104.569346559379, 
104.440703385128, 103.402512486127, 102.224120421754, 99.045226137625, 
101.397487513874, 96.8256284683686, 90.2070352386239, 93.9874375693675, 
95.9522613762488, 102.192964761376, 102.076381798002, 107.267336293008, 
107.257788568258, 103.645728357381, 103.631155660378, 103.805024972253, 
103.597487513874, 84.457789955605, 90.368342119867, 96.956784128746, 
95.761809100999, 105.614572697003, 102.197989733629, 106.200502219756, 
106.574371531632, 100.293466981132, 112.208039678136, 96.6427136514985, 
102.568844339623, 89.5346739733631, 82.6613068812432, 85.7110557713653, 
87.6969852941178, 94.8974875138736, 97.1547738623753, 103.174371531632, 
104.474371531632, 97.2000000000002, 106.629145394007, 102.171859045505, 
100.064321587126, 95.8713568257493, 85.3758795782465, 95.7472364039957, 
95.9000000000001, 103.621607935627, 102.250251109878, 108.933668146504, 
112.324120421754, 108.631155660378, 113.459798834628, 106.247738623752, 
109.121105715871, 165.763771576311, 151.472311910598, 168.854440604357, 
167.01494030152, 172.566095042522, 165.278910760377, 171.245703490676, 
173.005078675003, 161.715874268151, 167.370633868768, 169.164858518633, 
182.349525211683, 177.289636413718, 155.287062174998, 172.942860603901, 
165.57948196148, 173.580501842325, 172.873069603743, 173.862508830951, 
171.994459838177, 169.613581901888, 175.855080325953, 176.541789876917, 
185.284535064393, 186.406738740301, 171.699930121725, 174.417747407092, 
163.872357926782, 172.113751272419, 166.397768544, 170.952183056081, 
169.545822051413, 158.11329959031, 170.395638330209, 167.443226012601, 
178.312765639496, 174.175143485261, 154.998922814227, 159.313917848059, 
158.79737063505, 169.424496986474, 173.000079912105, 168.825964328539, 
171.133589234327, 171.992673103431, 175.419528662589, 171.244236480227, 
179.590587893763, 174.848849204677, 161.09792093833, 180.575597173093, 
176.570773004147, 186.333954561173, 184.94640453128, 193.152978105855, 
198.244306242776, 193.85527669408, 203.792127163977, 194.393862208802, 
212.217706501233), class = c("xts", "zoo"), index = structure(c(1262304000, 
1264982400, 1267401600, 1270080000, 1272672000, 1275350400, 1277942400, 
1280620800, 1283299200, 1285891200, 1288569600, 1291161600, 1293840000, 
1296518400, 1298937600, 1301616000, 1304208000, 1306886400, 1309478400, 
1312156800, 1314835200, 1317427200, 1320105600, 1322697600, 1325376000, 
1328054400, 1330560000, 1333238400, 1335830400, 1338508800, 1341100800, 
1343779200, 1346457600, 1349049600, 1351728000, 1354320000, 1356998400, 
1359676800, 1362096000, 1364774400, 1367366400, 1370044800, 1372636800, 
1375315200, 1377993600, 1380585600, 1383264000, 1385856000, 1388534400, 
1391212800, 1393632000, 1396310400, 1398902400, 1401580800, 1404172800, 
1406851200, 1409529600, 1412121600, 1414800000, 1417392000), tzone = "UTC", tclass = c("POSIXct", 
"POSIXt")), .Dim = c(60L, 3L), .Dimnames = list(NULL, c("Carvão.Mineral", 
"Minerais.não.metálicos", "Petróleo..gás.natural.e.serviços.de.apoio"
)))
我的代码:

library(xts)

for (i in 1:nrow(pesos)) {
    
    Extrativas_ex_petro_gas <- cbind(
        pesos$`Carvão mineral`[i] * Dados_xts$Carvão.Mineral[i],
        pesos$`Minerais não-metálicos`[i] * Dados_xts$Minerais.não.metálicos[i])
    
}
库(xts)
(一元一角:尼泊尔卢比(比索)){
Extrativas_ex_petro_gas为了简单起见,我将您的第一个表命名为“a”,将大表命名为“b”。我只是在两个data.frames中添加了一个年份列,从它们的日期派生而来。然后,我通过年份列将a和b合并在一起,创建了dataframe df。
最后,我根据您的需要通过乘法添加了所需的列

a$year <- gsub("-.*","",a$Ano)
b$year <- gsub("-.*","",b$Data)
df <- merge(a, b, by="year")
df$multi <- df[,4]*df[,6]

a$year谢谢!我使用这个名字是因为我原来的
df
有153列。