[R] Extract time and state of charge (Start and End) and Count

Jim Lemon drj|m|emon @end|ng |rom gm@||@com
Tue Jul 19 09:05:45 CEST 2022


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 using 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 using gmail.com <roslinaump using gmail.com>*
> University Malaysia Pahang
> Lebuhraya Tun Razak, 26300 Gambang, Pahang, Malaysia
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using 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.



More information about the R-help mailing list