Extract time and state of charge (Start and End) and Count
Hi Roslina, The following gives you the state of charge for the vehicle in your example data for each hour. This is approximate as your times are not on even hours. # get the temporal order of observations obs_order<-order(c(as.numeric(dt_2014$bc_start),as.numeric(dt_2014$bc_stop))) numeric_time<-c(as.numeric(dt_2014$bc_start),as.numeric(dt_2014$bc_stop))[obs_order] nobs<-diff(range(numeric_time))/3600 # find the linear approximation of charge state by hours hourly_SoC<-approx(numeric_time, c(dt_2014$Starting_SoC_of_12,dt_2014$Ending_SoC_of_12)[obs_order],n=nobs) To get the POSIX times: hourly_POSIX<-seq(dt_2014$bc_start[1],dt_2014$bc_stop,length.out=nobs) That will fill part of your table. If you want the state of charge by hour regardless of day, you'll have to create a new "hour" variable from, hourly_POSIX, then: mean_charge_by_hour<-by(hourly_SoC$hour,hourly_SoC$y,mean) #untested since I don't know whether you want this Jim On Mon, Jul 18, 2022 at 2:04 PM roslinazairimah zakaria
<roslinaump at gmail.com> wrote:
Dear all, I have data of Battery Electric vehicle (BEV). I would like to extract data from every hour starting from 0.00 to 0.59, 1:00-1:59 for SOC(state of charge) start to end. Some examples: I can extract data from SOC=0 and SOC=12 dt_2014[which(dt_2014$Starting_SoC_of_12==0 & dt_2014$Ending_SoC_of_12==12),] I can extract data from SOC=1 and SOC=12 dt_2014[which(dt_2014$Starting_SoC_of_12==1 & dt_2014$Ending_SoC_of_12==12),] and I would like to further categorise the data by hour and count how many cars from 0 state charge to 12 state charge at in that particular hour. Thank you so much for any help given. Some data
dput(dt_2014[1:10,])
structure(list(?..CarID = c("GC10", "GC10", "GC10", "GC10", "GC10",
"GC10", "GC10", "GC10", "GC10", "GC10"), BatteryChargeStartDate =
c("16/2/2014 16:05",
"16/2/2014 18:20", "17/2/2014 8:10", "18/2/2014 7:41", "18/2/2014 15:36",
"18/2/2014 16:36", "18/2/2014 21:26", "19/2/2014 8:57", "19/2/2014 21:08",
"20/2/2014 18:11"), BCStartTime = c("16:05", "18:20", "8:10",
"7:41", "15:36", "16:36", "21:26", "8:57", "21:08", "18:11"),
Year = c(2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L,
2014L, 2014L, 2014L), Month = c(2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L), Day = c(16L, 16L, 17L, 18L, 18L, 18L, 18L, 19L,
19L, 20L), BatteryChargeStopDate = c("16/2/2014 17:05", "16/2/2014
19:00",
"17/2/2014 15:57", "18/2/2014 9:52", "18/2/2014 15:39", "18/2/2014
17:36",
"19/2/2014 1:55", "19/2/2014 14:25", "20/2/2014 5:17", "20/2/2014 23:20"
), BCStopTime = c("17:05", "19:00", "15:57", "9:52", "15:39",
"17:36", "1:55", "14:25", "5:17", "23:20"), Year2 = c(2014L,
2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L
), Month2 = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), Day2 = c(16L,
16L, 17L, 18L, 18L, 18L, 19L, 19L, 20L, 20L), Starting_SoC_of_12 =
c(1L,
2L, 4L, 5L, 4L, 2L, 8L, 8L, 4L, 8L), Ending_SoC_of_12 = c(11L,
11L, 12L, 8L, 4L, 10L, 12L, 12L, 12L, 12L)), row.names = c(NA,
10L), class = "data.frame")
--
*Roslinazairimah Zakaria*
*Tel: +609-5492370; Fax. No.+609-5492766*
*Email: roslinaump at gmail.com <roslinaump at gmail.com>*
University Malaysia Pahang
Lebuhraya Tun Razak, 26300 Gambang, Pahang, Malaysia
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.