check_valid_codes2()¶
- check_valid_codes2(data, dump_file, *arg_code_pairs)¶
Advanced version of check_valid_codes(), available in Datavyu version 1.3.5 and higher.
Can check codes using patterns and can operate over multiple columns. Backwards-compatible with check_valid_codes() so this function should be able to replace calls to check_valid_codes().
Argument
Type
Description
data
String, RVariable, or Hash
When this parameter is a String or a column object from getVariable(), the function operates on codes within this column. If the parameter is a Hash (associative array), the function ignores the arg_code_pairs arguments and uses data from this Hash. The Hash must be structured as a nested mapping from columns (either as Strings or RVariables) to Hashes. These nested hashes must be mappings from code names (as Strings) to valid code values (as either lists (Arrays) or patterns (Regexp)).
dump_file
String, or Ruby File object
Path of the file to dump output to. Use empty String (i.e. “”) to write to the console. You can also specify a Ruby File object (e.g. from File.open()).
*arg_code_pairs
Key-value pairs
List of code names and valid values, in the format “code_name”, [“valid1”, “valid2”], “code_name2”, [“valid3”, “valid4”], etc. This is ignored if first argument is a Hash.
Returns
Nothing. Generated messages are output to console and/or file.
Example
The following example checks three columns for valid code values. Before the call to the function, a nested mapping is created for each column. The inner map is a mapping from the names of codes to their valid values.
## Params date_format = /\A\d{2}\/\d{2}\/\d{4}\Z/ # dates must be formatted: ##/##/#### # Associative mapping from column names to mappings from code names to valid values map = { 'id' => { 'testdate' => date_format, 'idnum' => /\A\d{3}\Z/, # id number must be exactly 3 digits 'gender' => ['m', 'f', '.'], # gender can be one of 3 values 'birthdate' => date_format }, 'condition' => { 'cond_ab' => ['a', 'b'] # condition can be either 'a' or 'b' }, 'trial' => { 'trialnum' => /\A\d+\Z/, # trial number must be one or more digits 'result_xyz' => ['x', 'y', 'z'] # result must be one of 3 values } } ## Body check_valid_codes2(map, '~/Desktop/check.txt')
See also