У меня есть две таблицы: Table1
содержит временные ряды для года:
Date year month hour value
01/01/2020 2020 1 0 1800
01/01/2020 2020 1 1 1300
01/01/2020 2020 1 2 400
01/01/2020 2020 1 3 1235
01/01/2020 2020 1 4 120.014
01/01/2020 2020 1 5 812.54
и т. Д.
У меня есть еще Table2
вкоторый фиксированное распределение Factor
дается в таблице для определенной Name
(Страна)
Name Factor
UK 0.003
BE 0.018
DE 0.28
FR 0.43
Теперь я хочу создать еще один кадр данных / таблицу Table3
, котораябудет заполнен вложенным циклом из двух таблиц Table1
и Table2
таким образом, что Value
каждого Hour
из Table1
будет умножено на Factor
из Name
(страны) изTable2
и цикл выполняется в течение всего года, т.е. количество строк в Table1
.Таким образом, первые Value
из Table1
, т.е. 1800
будут распределены в соответствии с Factor
в Table2
.Ex.для UK
это будет 1800*0.003=5.4
Таким образом, результат Table3
предположим, что будет таким (учитывая только в течение двух часов):
Table3
Name Date Year Month Hour New_value
UK 01/01/2020 2020 1 0 5.4
BE 01/01/2020 2020 1 0 32.4
DE 01/01/2020 2020 1 0 504
FR 01/01/2020 2020 1 0 774
UK 01/01/2020 2020 1 1 3.9
BE 01/01/2020 2020 1 1 23.4
DE 01/01/2020 2020 1 1 364
FR 01/01/2020 2020 1 1 559
Итак, Value
1800
будет распределено среди всех Names
, затем 1300
и так далее на весь год.Вот как я это сделал во вложенном цикле:
Table3 <- matrix(ncol=6, nrow=24)
#This dimension is just for sake of example but varies in my actual solution`
for (row in 1:nrow(Table1)) {
# This is outer loop which runs over the year
Value <- Table1[row, "Value"]
date <- Table1[row, "Date"]
Year <- Table1[row, "Year"]
Month <- Table1[row, "Month"]
Hour <- Table1[row, "Hour"]
for (r in 1:nrow(Table2))# This is inner loop which runs over the number of Names
{
Name <- Table2[r, "Name"]
Factor <- Table2[r, "Factor"]
Table3[row, ]<-c(Name,Value*Factor,date,Year,Month,Hour)
#Here I want to manipulate and add the data into a new Table3
r=r+1 # This is increment in name i.e. Table2
}
row=row+1
# This is increment in time hour i.e. Table1
}
Table3 <- data.frame(Table3)
Я не получаю желаемый вывод.Я не уверен, где мой цикл идет не так?Может ли кто-нибудь помочь мне улучшить мой код?Любая помощь будет оценена.Спасибо.