R/utilities.R
index_column.Rd
This function indexes (by ratio) variables in vars_to_index
to the first time in time_var
or to index_time
(if specified).
Groups in .DF
are both respected and required.
Neither var_to_index
nor time_var
can be in the grouping variables.
index_column( .DF, var_to_index, time_var = "Year", index_time = NULL, indexed_var = paste0(var_to_index, suffix), suffix = "_indexed" )
.DF | the data frame in which the variables are contained |
---|---|
var_to_index | the column name representing the variable to be indexed (a string) |
time_var | the name of the column containing time information.
Default is " |
index_time | the time to which data in |
indexed_var | the name of the indexed variable. Default is " |
suffix | the suffix to be appended to the indexed variable. Default is " |
a data frame with same number of rows as .DF
and the following columns:
grouping variables of .DF
, var_to_index
, time_var
,
and one additional column containing indexed var_to_index
named with the value of indexed_var
.
Note that this function works when the variable to index is a column of numbers or a column of matrices.
library(dplyr) library(tidyr) DF <- data.frame(Year = c(2000, 2005, 2010), a = c(10, 15, 20), b = c(5, 5.5, 6)) %>% gather(key = name, value = var, a, b) %>% group_by(name) index_column(DF, var_to_index = "var", time_var = "Year", suffix = "_ratioed")#> # A tibble: 6 × 4 #> # Groups: name [2] #> Year name var var_ratioed #> <dbl> <chr> <dbl> <dbl> #> 1 2000 a 10 1 #> 2 2005 a 15 1.5 #> 3 2010 a 20 2 #> 4 2000 b 5 1 #> 5 2005 b 5.5 1.1 #> 6 2010 b 6 1.2index_column(DF, var_to_index = "var", time_var = "Year", indexed_var = "now.indexed")#> # A tibble: 6 × 4 #> # Groups: name [2] #> Year name var now.indexed #> <dbl> <chr> <dbl> <dbl> #> 1 2000 a 10 1 #> 2 2005 a 15 1.5 #> 3 2010 a 20 2 #> 4 2000 b 5 1 #> 5 2005 b 5.5 1.1 #> 6 2010 b 6 1.2index_column(DF, var_to_index = "var", time_var = "Year", index_time = 2005, indexed_var = "now.indexed")#> # A tibble: 6 × 4 #> # Groups: name [2] #> Year name var now.indexed #> <dbl> <chr> <dbl> <dbl> #> 1 2000 a 10 0.667 #> 2 2005 a 15 1 #> 3 2010 a 20 1.33 #> 4 2000 b 5 0.909 #> 5 2005 b 5.5 1 #> 6 2010 b 6 1.09