set_variable | R Documentation |
Sets the value, units, and/or category of a new or existing column of a table-like object.
set_variable(
data_table,
name,
units = NULL,
category = NULL,
value = NA,
id_column = NULL,
value_table = NULL
)
data_table |
A table-like R object such as a data frame or an |
name |
The name of the column to be added to |
units |
The units of the column to be added to |
category |
The category of the column to be added to |
value |
The value of the column to be added to |
id_column |
The name of an identifier column in |
value_table |
A list of named elements, where the name of each element is a possible value
of the |
There are two main "modes" for setting the value of the new column: it can be
set to a fixed value (using the value
input argument), or it can be set
according to the values of another column (using the id_column
and
value_table
input arguments). The latter method is useful when
different values must be specified for different treatments within the data
set.
In greater detail, this function attempts to set the value of a new or
existing column in an exdf
object according to the following rules:
The value of the name
column of data_table
will be set to
value
; this assignment follows the usual rules; in other words,
value
could be a single value or a vector of length
nrow(data_table)
.
If units
and categories
are both NULL
, the units
and category will not be specified. In this case, if the name
column already exists, its units and category will remain the same;
if the name
column is new, it will be initialized with
NA
for its units and category.
If either units
_or_ category
is not NULL
, the
units and category for the name
column _will_ be specified. In
this case, if one of units
or category
_is_ NULL
,
its value will be set to NA
.
If id_column
is not NULL
, then the value_table
will be used to set different values of the name
column for
each specified value of id_column
. For example, if
id_column
is species
and value_table =
list(soybean = 1, tobacco = 2)
, then the name
column will be
set to 1
when species
is 'soybean'
and 2
when species
is 'tobacco'
. For any other values of
species (such as 'maize'
), the value of name
will still
be value
. **Note**: values of the id_column
will be
converted using as.character
before making comparisons.
For other table-like objects, such as data frames, only the values will be set, and the units and categories will be ignored.
An object based on data_table
with new and/or modified columns.
exdf
# Create a simple exdf object with two columns (`A` and `B`) and default values
# for its units and categories.
simple_exdf <- exdf(data.frame(A = c(3, 2, 7, 9), B = c(4, 5, 1, 8)))
print(simple_exdf)
# Add a new column called 'C' with units 'u1' and category 'cat1' whose value is
# 1000.
simple_exdf <- set_variable(simple_exdf, 'C', 'u1', 'cat1', 1000)
# Set the value of the 'B' column to 2000 when 'A' is 3, to 3000 when 'A' is 9,
# and to 4000 for all other values of 'A'. Do not modify its units or category.
simple_exdf <- set_variable(
simple_exdf,
'B',
value = 4000,
id_column = 'A',
value_table = list('3' = 2000, '9' = 3000)
)
print(simple_exdf)
# Take the same operations, but using a data frame instead
simple_df <- data.frame(A = c(3, 2, 7, 9), B = c(4, 5, 1, 8))
simple_df <- set_variable(simple_exdf$main_data, 'C', 'u1', 'cat1', 1000)
simple_df <- set_variable(
simple_df,
'B',
value = 4000,
id_column = 'A',
value_table = list('3' = 2000, '9' = 3000)
)
print(simple_df)
# As a more realistic example, load a Licor file and set different values of
# mesophyll conductance for each species in the data set.
licor_file <- read_gasex_file(
PhotoGEA_example_file_path('ball_berry_1.xlsx')
)
licor_file <- set_variable(
licor_file,
'gmc',
'mol m^(-2) s^(-1) bar^(-1)',
'',
id_column = 'species',
value_table = list(soybean = 0.9, tobacco = 1.1)
)
print(licor_file[, c('species', 'gmc'), TRUE])
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.