CST_SplitDim {CSTools}R Documentation

Function to Split Dimension

Description

This function split a dimension in two. The user can select the dimension to split and provide indices indicating how to split that dimension or dates and the frequency expected (monthly or by day, month and year). The user can also provide a numeric frequency indicating the length of each division.

Usage

CST_SplitDim(
  data,
  split_dim = "time",
  indices = NULL,
  freq = "monthly",
  new_dim_name = NULL,
  insert_ftime = NULL
)

Arguments

data

a 's2dv_cube' object

split_dim

a character string indicating the name of the dimension to split

indices

a vector of numeric indices or dates. If left at NULL, the dates provided in the s2dv_cube object (element Dates) will be used.

freq

a character string indicating the frequency: by 'day', 'month' and 'year' or 'monthly' (by default). 'month' identifies months between 1 and 12 independently of the year they belong to, while 'monthly' differenciates months from different years.

new_dim_name

a character string indicating the name of the new dimension.

insert_ftime

an integer indicating the number of time steps to add at the begining of the time series.

Details

Parameter 'insert_ftime' has been included for the case of using daily data, requiring split the temporal dimensions by months (or similar) and the first lead time doesn't correspondt to the 1st day of the month. In this case, the insert_ftime could be used, to get a final output correctly organized. E.g.: leadtime 1 is the 2nd of November and the input time series extend to the 31st of December. When requiring split by month with inset_ftime = 1, the 'monthly' dimension of length two will indicate the month (position 1 for November and position 2 for December), dimension 'time' will be length 31. For November, the position 1 and 31 will be NAs, while from positon 2 to 30 will be filled with the data provided. This allows to select correctly days trhough time dimension.

Author(s)

Nuria Perez-Zanon, nuria.perez@bsc.es

Examples


data <- 1 : 20
dim(data) <- c(time = 10, lat = 2)
data <-list(data = data)
class(data) <- 's2dv_cube'
indices <- c(rep(1,5), rep(2,5))
new_data <- CST_SplitDim(data, indices = indices)
time <- c(seq(ISOdate(1903, 1, 1), ISOdate(1903, 1, 4), "days"),
         seq(ISOdate(1903, 2, 1), ISOdate(1903, 2, 4), "days"),
         seq(ISOdate(1904, 1, 1), ISOdate(1904, 1, 2), "days"))
data <- list(data = data$data, Dates = time)
class(data) <- 's2dv_cube'
new_data <- CST_SplitDim(data, indices = time)
dim(new_data$data)
new_data <- CST_SplitDim(data, indices = time, freq = 'day')
dim(new_data$data)
new_data <- CST_SplitDim(data, indices = time, freq = 'month')
dim(new_data$data)
new_data <- CST_SplitDim(data, indices = time, freq = 'year')
dim(new_data$data)

[Package CSTools version 4.0.1 Index]