【发布时间】:2021-09-13 10:04:17
【问题描述】:
我又一次求助于 SO Gods 来帮助我,因为我只是一个凡人的程序员。
我有 2 个DataFrames Op 和 fwd。
即使我输入的行数太多而无法放在这里,它们也确实太大了。这就是为什么我只输入前 20 行。
fwd = structure(list(Dates = structure(c(18779, 18780, 18781, 18782,
18783, 18784, 18785, 18786, 18787, 18788, 18789, 18790, 18791,
18792, 18793, 18794, 18795, 18796, 18797, 18798), class = "Date"),
CAL1.num = c(2022L, 2022L, 2022L, 2022L, 2022L, 2022L, 2022L,
2022L, 2022L, 2022L, 2022L, 2022L, 2022L, 2022L, 2022L, 2022L,
2022L, 2022L, 2022L, 2022L), CAL2.num = c(2023L, 2023L, 2023L,
2023L, 2023L, 2023L, 2023L, 2023L, 2023L, 2023L, 2023L, 2023L,
2023L, 2023L, 2023L, 2023L, 2023L, 2023L, 2023L, 2023L),
CAL3.num = c(2024L, 2024L, 2024L, 2024L, 2024L, 2024L, 2024L,
2024L, 2024L, 2024L, 2024L, 2024L, 2024L, 2024L, 2024L, 2024L,
2024L, 2024L, 2024L, 2024L), CAL1.prix = c(20.7198630136986,
20.5709826758316, 20.5416570682562, 20.1627967508327, 19.5804662519739,
19.970595583085, 19.8936930981244, 19.598362502073, 19.8008353366899,
19.8038507758495, 19.5289796563554, 19.7658386493753, 19.5078559900235,
19.3052695609575, 19.1955268594179, 19.3754495791108, 19.3013180873984,
19.4454161579162, 19.8524627413157, 19.8965952683892), CAL2.prix = c(17.9395616438356,
17.9420914607196, 17.9607954381744, 17.7250235708918, 17.3068986556031,
17.5655735706712, 17.4205222954918, 17.156263873053, 17.3336837635027,
17.3420560988812, 17.2226393449218, 17.2839803603736, 17.0980024668028,
16.955907646717, 16.9389288476745, 17.1480589434091, 17.034948349062,
17.0495808702106, 17.3617641445812, 17.4449687857862), CAL3.prix = c(16.8487431693989,
16.7476370720291, 16.6119480947879, 16.3651399362189, 16.069183915644,
16.2355843497187, 16.2713389578965, 16.1073762918961, 16.3063152846391,
16.3621047950222, 16.3258984487073, 16.3618578134152, 16.2591922615945,
16.0804320226449, 16.0739980313506, 16.3870819039359, 16.5066329864522,
16.513327927322, 16.7687609933202, 16.8776662523007), QUARTER1.nom = c("Q3 2021",
"Q3 2021", "Q3 2021", "Q3 2021", "Q3 2021", "Q3 2021", "Q3 2021",
"Q3 2021", "Q3 2021", "Q3 2021", "Q3 2021", "Q3 2021", "Q3 2021",
"Q3 2021", "Q3 2021", "Q3 2021", "Q3 2021", "Q3 2021", "Q3 2021",
"Q3 2021"), QUARTER2.nom = c("Q4 2021", "Q4 2021", "Q4 2021",
"Q4 2021", "Q4 2021", "Q4 2021", "Q4 2021", "Q4 2021", "Q4 2021",
"Q4 2021", "Q4 2021", "Q4 2021", "Q4 2021", "Q4 2021", "Q4 2021",
"Q4 2021", "Q4 2021", "Q4 2021", "Q4 2021", "Q4 2021"), QUARTER3.nom = c("Q1 2022",
"Q1 2022", "Q1 2022", "Q1 2022", "Q1 2022", "Q1 2022", "Q1 2022",
"Q1 2022", "Q1 2022", "Q1 2022", "Q1 2022", "Q1 2022", "Q1 2022",
"Q1 2022", "Q1 2022", "Q1 2022", "Q1 2022", "Q1 2022", "Q1 2022",
"Q1 2022"), QUARTER4.nom = c("Q2 2022", "Q2 2022", "Q2 2022",
"Q2 2022", "Q2 2022", "Q2 2022", "Q2 2022", "Q2 2022", "Q2 2022",
"Q2 2022", "Q2 2022", "Q2 2022", "Q2 2022", "Q2 2022", "Q2 2022",
"Q2 2022", "Q2 2022", "Q2 2022", "Q2 2022", "Q2 2022"), QUARTER1.prix = c(24.4009782608696,
23.8791293344845, 23.6895439878102, 23.1986796056566, 22.3253285022921,
22.6640748439239, 22.7646092945935, 22.281369465237, 22.4915701163657,
22.2460826351854, 21.9641008808891, 22.3943073066212, 21.9430552443109,
21.5838423137683, 21.5216100604998, 21.7183538434616, 21.6178630431267,
22.0840523702174, 22.5758311437561, 22.5797108901139), QUARTER2.prix = c(25.2263043478261,
24.7192160211123, 24.5643273242301, 24.1333672230736, 23.4826299624358,
24.0155578900935, 24.1022650172914, 23.854421232743, 23.9063239026515,
23.7167326854575, 23.3461717065084, 23.6767791363945, 23.2928412004004,
22.8239297903667, 22.8206587737937, 22.9449903236577, 22.9170029906723,
23.2600872568113, 23.7352326859226, 23.7318277693714), QUARTER3.prix = c(25.5061111111111,
25.0924453041838, 24.9438104415761, 24.4516395089059, 23.734597082601,
24.1836860520103, 24.2425714820358, 23.9608801643543, 24.0077045012931,
23.8625790300674, 23.4938582233503, 23.8204360345224, 23.4585802827627,
23.0648009364399, 23.0503755079289, 23.2072021288566, 23.1679045472902,
23.4704615774202, 23.9887249226929, 24.0296246878244), QUARTER4.prix = c(18.8628571428571,
18.7936780601555, 18.76113878006, 18.3719593325938, 17.8063028446364,
18.1714236251237, 18.0405795878287, 17.6842019501597, 17.9633497185463,
18.0350331708269, 17.812021591911, 18.0312294037435, 17.789591687912,
17.6312927680928, 17.4703292692614, 17.6630817559893, 17.5288070986573,
17.6155053427362, 17.9832674813674, 18.0256484510743), MONTH1.nom = c("M7 2021",
"M7 2021", "M7 2021", "M7 2021", "M7 2021", "M7 2021", "M7 2021",
"M7 2021", "M7 2021", "M7 2021", "M7 2021", "M7 2021", "M7 2021",
"M7 2021", "M7 2021", "M7 2021", "M7 2021", "M7 2021", "M7 2021",
"M7 2021"), MONTH2.nom = c("M8 2021", "M8 2021", "M8 2021",
"M8 2021", "M8 2021", "M8 2021", "M8 2021", "M8 2021", "M8 2021",
"M8 2021", "M8 2021", "M8 2021", "M8 2021", "M8 2021", "M8 2021",
"M8 2021", "M8 2021", "M8 2021", "M8 2021", "M8 2021"), MONTH3.nom = c("M9 2021",
"M9 2021", "M9 2021", "M9 2021", "M9 2021", "M9 2021", "M9 2021",
"M9 2021", "M9 2021", "M9 2021", "M9 2021", "M9 2021", "M9 2021",
"M9 2021", "M9 2021", "M9 2021", "M9 2021", "M9 2021", "M9 2021",
"M9 2021"), MONTH4.nom = c("M10 2021", "M10 2021", "M10 2021",
"M10 2021", "M10 2021", "M10 2021", "M10 2021", "M10 2021",
"M10 2021", "M10 2021", "M10 2021", "M10 2021", "M10 2021",
"M10 2021", "M10 2021", "M10 2021", "M10 2021", "M10 2021",
"M10 2021", "M10 2021"), MONTH1.prix = c(24.56, 24.0316394164205,
23.8305607727713, 23.3221443581862, 22.4181924739579, 22.7652505249174,
22.8359195995121, 22.3440978554473, 22.5744708270217, 22.296982351325,
22.0146497904558, 22.4464255212171, 21.9827906537189, 21.6061923844531,
21.5728465276548, 21.77154858271, 21.6812999231947, 22.160502823575,
22.6461706466308, 22.6825679056712), MONTH2.prix = c(24.33,
23.8197624908486, 23.6363342114893, 23.165393738618, 22.3090561325133,
22.6543048025027, 22.7611323512942, 22.2877324620753, 22.4832702720456,
22.2509377861053, 21.9572024521086, 22.3882935479875, 21.9350221930074,
21.5849317681906, 21.5175910522709, 21.7067681832549, 21.6032068733244,
22.0762504646336, 22.5643986056167, 22.5493770956657), MONTH3.prix = c(24.31,
23.7828813215745, 23.5988100788821, 23.1054947573159, 22.2461838470091,
22.5696223496993, 22.6945148209203, 22.2099750319535, 22.4144825544854,
22.1884692725573, 21.9189953840767, 22.3466660354603, 21.9102961409363,
21.5596214711576, 21.4728186862763, 21.6753577951185, 21.5674563091854,
22.0131155375179, 22.5149606135297, 22.5047702283011), MONTH4.prix = c(24.76,
24.2277487078825, 24.0712491465489, 23.6427115413029, 23.0102312371408,
23.5583299448447, 23.6502693471086, 23.4325414986478, 23.4861175143973,
23.3201907140291, 22.9323618250847, 23.2700400258469, 22.8766635305259,
22.399491320035, 22.3966520753529, 22.5201036501858, 22.4954814039879,
22.8385990939485, 23.3133721389017, 23.3282933797103)), row.names = c(NA,
20L), class = "data.frame")
Op = structure(list(Dates = c("2021-06-01", "2021-06-02", "2021-06-03",
"2021-06-04", "2021-06-05", "2021-06-06", "2021-06-07", "2021-06-08",
"2021-06-09", "2021-06-10", "2021-06-11", "2021-06-12", "2021-06-13",
"2021-06-14", "2021-06-15", "2021-06-16", "2021-06-17", "2021-06-18",
"2021-06-19", "2021-06-20"), `M6 2021` = c(0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
`M7 2021` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `M8 2021` = c(0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L), `M9 2021` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `M10 2021` = c(-0.73,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
`M11 2021` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0), `M12 2021` = c(0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
`M1 2022` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0), `M2 2022` = c(0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M3 2022` = c(0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M4 2022` = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
`M5 2022` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0), `M6 2022` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `M7 2022` = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
`M8 2022` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0), `M9 2022` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `M10 2022` = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
`M11 2022` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0), `M12 2022` = c(0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
`M1 2023` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0), `M2 2023` = c(0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M3 2023` = c(0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L), `M4 2023` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0), `M5 2023` = c(0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M6 2023` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `M7 2023` = c(0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M8 2023` = c(0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M9 2023` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `M10 2023` = c(0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M11 2023` = c(0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M12 2023` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `M1 2024` = c(0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M2 2024` = c(0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M3 2024` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `M4 2024` = c(0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M5 2024` = c(0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M6 2024` = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
`M7 2024` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0), `M8 2024` = c(0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M9 2024` = c(0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L), `M10 2024` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0), `M11 2024` = c(0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `M12 2024` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `M1 2025` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `M2 2025` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `M3 2025` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `M4 2025` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `M5 2025` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `M6 2025` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `M7 2025` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `M8 2025` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `M9 2025` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `M10 2025` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `M11 2025` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `M12 2025` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `Q2 2021` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `Q3 2021` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `Q4 2021` = c(0.73, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `Q1 2022` = c(0.51,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
`Q2 2022` = c(-0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0), `Q3 2022` = c(0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `Q4 2022` = c(0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `Q1 2023` = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
`Q2 2023` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0), `Q3 2023` = c(0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `Q4 2023` = c(0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `Q1 2024` = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
`Q2 2024` = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0), `Q3 2024` = c(0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `Q4 2024` = c(0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `Q1 2025` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `Q2 2025` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `Q3 2025` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `Q4 2025` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `Y 2021` = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), `Y 2022` = c(0.9, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `Y 2023` = c(1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), `Y 2024` = c(0.88,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
`Y 2025` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), row.names = c(NA, 20L
), class = "data.frame")
我想做的是:
- 从 Op 中选择值不为零的行(假设第 1、2 行有值)
- 对于这些行 (1, 2) 中的每一行,选择没有 0 的列
- 遍历这些行的这些列以获取该列名称
- 在 DataFrame 中找到名为 fwd 的列名
- 根据列名的名称和类型以及行值从 fwd 中获取一个值
- 将此值乘以 Op 的值
- 将这些值相加
我需要帮助优化的代码是:
res = 0
Mat = Op
for (i in which (rowSums (abs (Mat[, -1])) != 0))
{
for (j in (which (Mat[i, -1] != 0) + 1))
{
produit = colnames (Mat)[j]
if (substr (produit, 1, 1) == "M") prix = fwd[i, which (as.character (fwd[i, ]) == produit) + 4]
if (substr (produit, 1, 1) == "Q") prix = fwd[i, which (as.character (fwd[i, ]) == produit) + 4]
if (substr (produit, 1, 1) == "Y") prix = fwd[i, which (paste0 ("Y ", fwd[i, ]) == produit) + 3]
res = res + as.numeric (Mat[i, j] * prix)
}
}
【问题讨论】:
-
你到底乘的是什么?您能否给出前几个预期输出,即
Op[1, 'M10 2021']大于零。它会乘以什么? -
fwd的名称也应该有nom或num的后缀吗? -
您的根本问题是您的数据不是tidy。这样做,你的生活会变得更轻松:一开始就没有循环!另外,您的问题没有明确说明。在步骤 4 中,
fwd中没有列名满足在步骤 1-3 中派生的过滤器。但是,有一些列包含这些值。请澄清您的问题。 -
您在 Op 和 fwd 中的 colnames 完全不同,所以您所说的 step-3 没有意义?
-
回答 cmets:1) 预期的输出 res 只是 Op 中的值乘以 fwd 中的值的总和 2) 后缀是 .nom(如法语中的名称) 3) 是 colnames(Op) != colnames(fwd),但没有第 3 步没有用,因为您正在第 i 行中搜索 Op 的列名。您正在搜索将 4 或 3 添加到 j 以获取要与之相乘的值的 (j) 列