У меня есть датафрейм df
с данными о часовом (df$Datetime
) солнечном облучении (df$Irradiance
) в течение 9 месяцев. Например:
df<- data.frame(Datetime=c("2019-07-30 00:00:00","2019-07-30 01:00:00","2019-07-30 02:00:00","2019-07-30 03:00:00","2019-07-30 04:00:00","2019-07-30 05:00:00","2019-07-30 06:00:00","2019-07-30 07:00:00","2019-07-30 08:00:00","2019-07-30 09:00:00","2019-07-30 10:00:00","2019-07-30 11:00:00","2019-07-30 12:00:00","2019-07-30 13:00:00","2019-07-30 14:00:00","2019-07-30 15:00:00","2019-07-30 16:00:00","2019-07-30 17:00:00","2019-07-30 18:00:00","2019-07-30 19:00:00","2019-07-30 20:00:00","2019-07-30 21:00:00"),
Irradiance=c(0,0,0,0,0,1354,8574,15698,35874,87569,148632,248254,358326,387520,312542,249874,189325,102458,59632,24879,1003,0))
df$Datetime <- as.POSIXct(df$Datetime, format="%Y-%m-%d %H:%M:%S",tz="utz")
df
Datetime Irradiance
1 2019-07-30 00:00:00 0
2 2019-07-30 01:00:00 0
3 2019-07-30 02:00:00 0
4 2019-07-30 03:00:00 0
5 2019-07-30 04:00:00 0
6 2019-07-30 05:00:00 1354
7 2019-07-30 06:00:00 8574
8 2019-07-30 07:00:00 15698
9 2019-07-30 08:00:00 35874
10 2019-07-30 09:00:00 87569
11 2019-07-30 10:00:00 148632
12 2019-07-30 11:00:00 248254
13 2019-07-30 12:00:00 358326
14 2019-07-30 13:00:00 387520
15 2019-07-30 14:00:00 312542
16 2019-07-30 15:00:00 249874
17 2019-07-30 16:00:00 189325
18 2019-07-30 17:00:00 102458
19 2019-07-30 18:00:00 59632
20 2019-07-30 19:00:00 24879
21 2019-07-30 20:00:00 1003
22 2019-07-30 21:00:00 0
Я хотел бы создать новую переменную с именем LightIntensity
, которая колеблется от 0 до 1 каждый день. Час, в течение которого есть максимальная яркость, новое значение для новой переменной будет равно 1, а для часов, где нет яркости, новое значение будет равно 0. Хитрость заключается в том, что яркость меняется в течение года, поэтомуМне нужно рассчитать почасовую LightIntensity
по дням.
Ниже приведен пример того, что я ожидал. В этом случае я просто разделил часовую освещенность (df$Datetime
) на максимальную освещенность за этот день (387520
).
df$LightIntensity <- df$Irradiance/387520
df
Datetime Irradiance LightIntensity
1 2019-07-30 00:00:00 0 0.000000000
2 2019-07-30 01:00:00 0 0.000000000
3 2019-07-30 02:00:00 0 0.000000000
4 2019-07-30 03:00:00 0 0.000000000
5 2019-07-30 04:00:00 0 0.000000000
6 2019-07-30 05:00:00 1354 0.003494013
7 2019-07-30 06:00:00 8574 0.022125310
8 2019-07-30 07:00:00 15698 0.040508877
9 2019-07-30 08:00:00 35874 0.092573287
10 2019-07-30 09:00:00 87569 0.225972853
11 2019-07-30 10:00:00 148632 0.383546656
12 2019-07-30 11:00:00 248254 0.640622419
13 2019-07-30 12:00:00 358326 0.924664533
14 2019-07-30 13:00:00 387520 1.000000000
15 2019-07-30 14:00:00 312542 0.806518373
16 2019-07-30 15:00:00 249874 0.644802849
17 2019-07-30 16:00:00 189325 0.488555429
18 2019-07-30 17:00:00 102458 0.264394096
19 2019-07-30 18:00:00 59632 0.153881090
20 2019-07-30 19:00:00 24879 0.064200557
21 2019-07-30 20:00:00 1003 0.002588254
22 2019-07-30 21:00:00 0 0.000000000
Однако я не знаю, как это сделать, когда мойдатафрейм занимает более одного дня (в моем случае около 240 дней). Как мне сделать, чтобы создать переменную с именем LightIntensity
с учетом максимальной освещенности в день?
Примечание: я бы предпочел научиться делать это с языком data.table
, однако другие способы полезныдля меня.