| Type: | Package | 
| Title: | Tidy Up Date/Time Ranges | 
| Version: | 0.1.4 | 
| BugReports: | https://github.com/arg0naut91/neatRanges/issues | 
| Description: | Collapse, partition, combine, fill gaps in and expand date/time ranges. | 
| URL: | https://github.com/arg0naut91/neatRanges | 
| License: | MIT + file LICENSE | 
| Depends: | R (≥ 3.1.0) | 
| Imports: | data.table, Rcpp (≥ 1.0.8.3) | 
| LinkingTo: | Rcpp | 
| Suggests: | testthat | 
| Encoding: | UTF-8 | 
| NeedsCompilation: | yes | 
| Packaged: | 2022-10-17 11:59:22 UTC; Aljaz | 
| Author: | Aljaz Jelenko [aut, cre], Patrik Punco [aut] | 
| Maintainer: | Aljaz Jelenko <aljaz.jelenko@amis.net> | 
| Repository: | CRAN | 
| Date/Publication: | 2022-10-18 07:40:09 UTC | 
Collapses the consecutive date or timestamp ranges into one record.
Description
The date/time ranges where the gap between two records is equal to or less than max_gap parameter are collapsed into one record.
Usage
collapse_ranges(
  df,
  groups = NULL,
  start_var = NULL,
  end_var = NULL,
  startAttr = NULL,
  endAttr = NULL,
  dimension = c("date", "timestamp"),
  max_gap = 0L,
  fmt = "%Y-%m-%d",
  tz = "UTC",
  origin = "1970-01-01"
)
Arguments
df | 
 Your data frame (object of class 'data.frame' or 'data.table')  | 
groups | 
 Grouping variables, character strings  | 
start_var | 
 Start of the range, character of length 1L  | 
end_var | 
 End of the range, character of length 1L  | 
startAttr | 
 Attributes linked to start of the range which should be kept (converted to character type by default)  | 
endAttr | 
 Attributes linked to end of the range which should be kept (converted to character type by default)  | 
dimension | 
 Indicate whether your range includes only dates ('date') or also timestamp ('timestamp'). Defaults to 'date'  | 
max_gap | 
 Gap between date or timestamp ranges, e.g. for 0, default, it will put together all records where there is no gap in-between  | 
fmt | 
 The format of your date or timestamp field, defaults to YMD  | 
tz | 
 Time zone, defaults to UTC  | 
origin | 
 Origin for timestamp conversion, defaults to '1970-01-01'  | 
Value
'data.frame' if initial input is a 'data.frame', 'data.table' if original object is a 'data.table' with collapsed records.
Examples
df_collapse <- data.frame(
  id = c(rep("1111", 3), rep("2222", 3)),
  rating = c("A+", "AA", "AA", rep("B-", 3)),
  start_date = c(
    "2014-01-01", "2015-01-01", "2016-01-01",
    "2017-01-01", "2018-01-01", "2019-01-01"
  ),
  end_date = c(
    "2014-12-31", "2015-12-31", "2016-03-01",
    "2017-01-31", "2018-12-31", "2020-02-01"
  )
)
collapse_ranges(df_collapse, c("id", "rating"), "start_date", "end_date")
Combines ranges from different tables into a single table.
Description
Combines ranges from different tables into a single table.
Usage
combine_ranges(
  dfs,
  groups = NULL,
  start_var = NULL,
  end_var = NULL,
  startAttr = NULL,
  endAttr = NULL,
  dimension = "date",
  max_gap = 0L,
  fmt = "%Y-%m-%d",
  tz = "UTC",
  origin = "1970-01-01"
)
Arguments
dfs | 
 A list of your data frames, e.g. list(df1, df2)  | 
groups | 
 Grouping variables  | 
start_var | 
 Start of the range  | 
end_var | 
 End of the range  | 
startAttr | 
 Attributes linked to start of the range which should be kept (converted to character type by default)  | 
endAttr | 
 Attributes linked to end of the range which should be kept (converted to character type by default)  | 
dimension | 
 Indicate whether your range includes only dates ('date') or also timestamp ('timestamp'). Defaults to 'date'  | 
max_gap | 
 Gap between date or timestamp ranges, e.g. for 0, default, it will put together all records where there is no gap in-between  | 
fmt | 
 The format of your date or timestamp field, defaults to YMD  | 
tz | 
 Time zone, defaults to UTC  | 
origin | 
 Origin for timestamp conversion, defaults to 1970-01-01  | 
Value
Returns a data frame (if first table passed is data.table, then data.table) with combined ranges.
Examples
df1 <- data.frame(
  start = c("2010-01-01", "2012-06-01", "2014-10-15"),
  end = c("2010-08-05", "2013-03-03", "2015-01-01"),
  group = c("a", "a", "b"),
  infoScores = c(0, 3, 2)
)
df2 <- data.frame(
  end = c("2012-04-05", "2014-06-09", "2009-02-01"),
  group = c("b", "a", "b"),
  start = c("2009-01-15", "2012-07-08", "2008-01-01"),
  score = c(8, 2, 3)
)
combine_ranges(dfs = list(df1, df2), groups = "group",
start_var = "start", end_var = "end")
Expand date ranges.
Description
Expand date ranges.
Usage
expand_dates(
  df,
  start_var,
  end_var,
  name = "Expanded",
  fmt = "%Y-%m-%d",
  vars_to_keep = NULL,
  unit = "day"
)
Arguments
df | 
 Data frame (can also be a data.table or a tibble)  | 
start_var | 
 Start Date column  | 
end_var | 
 End Date column  | 
name | 
 The name of newly created column. Defaults to 'Expanded'  | 
fmt | 
 The format of date columns, defaults to Y-M-D  | 
vars_to_keep | 
 Which columns you would like to keep  | 
unit | 
 By which unit of time you want to expand; the default is day  | 
Value
Returns a full data frame with expanded sequences in a column, e.g. by day or month.
Examples
df <- data.frame(
id = c("1111", "2222", "3333"),
gender = c("M", "F", "F"),
start = c("2018-01-01", "2019-01-01", "2020-01-01"),
end = c("2018-01-05", "2019-01-07", "2020-01-08")
)
expand_dates(df, start_var = "start", end_var = "end",
vars_to_keep = c("id", "gender"), unit = "day")
Expand timestamp ranges.
Description
Expand timestamp ranges.
Usage
expand_times(
  df,
  start_var,
  end_var,
  name = "Expanded",
  fmt = "%Y-%m-%d %H:%M:%OS",
  vars_to_keep = NULL,
  unit = "hour",
  tz = "UTC"
)
Arguments
df | 
 Data frame (can also be a data.table or a tibble)  | 
start_var | 
 Start time column  | 
end_var | 
 End time column  | 
name | 
 The name of newly created column. Defaults to 'Expanded'  | 
fmt | 
 The format of date columns, defaults to Y-M-D H:M:OS  | 
vars_to_keep | 
 Which columns you would like to keep  | 
unit | 
 By which unit of time you want to expand; the default is day  | 
tz | 
 Desired time zone - defaults to UTC  | 
Value
Returns a full data frame with expanded sequences in a column, e.g. by day or month.
Examples
df <- data.frame(
id = c("1111", "2222", "3333"),
gender = c("M", "F", "F"),
start = c("2018-01-01 15:00:00", "2019-01-01 14:00:00", "2020-01-01 19:00:00"),
end = c("2018-01-01 18:30:00", "2019-01-01 17:30:00", "2020-01-02 02:00:00")
)
expand_times(df, start_var = "start", end_var = "end",
vars_to_keep = c("id", "gender"), unit = "hour")
Fill the gaps between ranges.
Description
Fill the gaps between ranges.
Usage
fill_ranges(
  df,
  groups = NULL,
  start_var = NULL,
  end_var = NULL,
  fill = NULL,
  dimension = "date",
  fmt = "%Y-%m-%d",
  tz = "UTC",
  origin = "1970-01-01"
)
Arguments
df | 
 Your data frame  | 
groups | 
 Grouping variables  | 
start_var | 
 Start of the range  | 
end_var | 
 End of the range  | 
fill | 
 Fill the missing values for values coresponding to missing ranges, e.g. 'colname1 = 0, colname2 = Missing'  | 
dimension | 
 Indicate whether your range includes only dates ('date') or also timestamp ('timestamp'). Defaults to 'date'  | 
fmt | 
 The format of your date or timestamp field, defaults to YMD  | 
tz | 
 Time zone, defaults to UTC  | 
origin | 
 Origin for timestamp conversion, defaults to 1970-01-01  | 
Value
Returns ordered data frame (if initial input data.table, then data.table) with added missing ranges.
Examples
df <- data.frame(
group = c("a", "a", "b", "b", "b"),
start = c("2007-01-01", "2010-06-02", "2009-04-05", "2012-08-01", "2019-03-19"),
end = c("2008-02-05", "2013-04-05", "2009-06-03", "2013-02-17", "2021-04-21"),
cost = c(143, 144, 105, 153, 124)
)
fill_ranges(df, start_var = "start", end_var = "end", groups = "group")
Split ranges into multiple records
Description
Split ranges into multiple records
Usage
partition_ranges(
  df,
  start_var,
  end_var,
  fmt = "%Y-%m-%d",
  vars_to_keep = NULL,
  partition_by = "year"
)
Arguments
df | 
 Your data frame (can also be a data.table or a tibble)  | 
start_var | 
 Start variable  | 
end_var | 
 End variable  | 
fmt | 
 Format of the date; defaults to Y-m-d  | 
vars_to_keep | 
 Any column you'd like to retain (optional)  | 
partition_by | 
 How should the range be partitioned ('year' or 'month'); defaults to 'year'  | 
Value
Returns a data frame with start, end and optional grouping columns
Examples
df <- data.frame(group = c("a", "a", "b", "b", "c"),
start = c("2017-05-01", "2019-04-03", "2011-03-03", "2014-05-07", "2017-02-01"),
end = c("2018-09-01", "2020-04-03", "2012-05-03", "2016-04-02", "2017-04-05")
)
partition_ranges(df, "start", "end", partition_by = "month")