mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
Added .ado and .sthlp samples for Stata.
The author of this message, mwhite-IPA, is the source of these samples.
This commit is contained in:
5
samples/Stata/hello.ado
Normal file
5
samples/Stata/hello.ado
Normal file
@@ -0,0 +1,5 @@
|
||||
program hello
|
||||
vers 13
|
||||
|
||||
display "Hello world!"
|
||||
end
|
||||
658
samples/Stata/odkmeta.sthlp
Normal file
658
samples/Stata/odkmeta.sthlp
Normal file
@@ -0,0 +1,658 @@
|
||||
{smcl}
|
||||
{* *! version 1.1.0 Matthew White 05jan2014}{...}
|
||||
{title:Title}
|
||||
|
||||
{phang}
|
||||
{cmd:odkmeta} {hline 2} Create a do-file to import ODK data
|
||||
|
||||
|
||||
{marker syntax}{...}
|
||||
{title:Syntax}
|
||||
|
||||
{p 8 10 2}
|
||||
{cmd:odkmeta}
|
||||
{cmd:using}
|
||||
{it:{help filename}}{cmd:,}
|
||||
{opt csv(csvfile)}
|
||||
{* Using -help histogram- as a template.}{...}
|
||||
{* -help histogram- notwithstanding, "opts" is rarely preceded by an underscore.}{...}
|
||||
{cmdab:s:urvey(}{it:surveyfile}{cmd:,}
|
||||
{it:{help odkmeta##surveyopts:surveyopts}}{cmd:)}
|
||||
{cmdab:cho:ices(}{it:choicesfile}{cmd:,}
|
||||
{it:{help odkmeta##choicesopts:choicesopts}}{cmd:)}
|
||||
[{it:options}]
|
||||
|
||||
{* Using -help odbc- as a template.}{...}
|
||||
{* 36 is the position of the last character in the first column + 3.}{...}
|
||||
{synoptset 36 tabbed}{...}
|
||||
{synopthdr}
|
||||
{synoptline}
|
||||
{syntab:Main}
|
||||
{* Using -help heckman- as a template.}{...}
|
||||
{p2coldent:* {opt csv(csvfile)}}name of the .csv file that
|
||||
contains the ODK data{p_end}
|
||||
{p2coldent:* {cmdab:s:urvey(}{it:surveyfile}{cmd:,} {it:{help odkmeta##surveyopts:surveyopts}}{cmd:)}}import
|
||||
metadata from the {it:survey} worksheet {it:surveyfile}{p_end}
|
||||
{p2coldent:* {cmdab:cho:ices(}{it:choicesfile}{cmd:,} {it:{help odkmeta##choicesopts:choicesopts}}{cmd:)}}import
|
||||
metadata from the {it:choices} worksheet {it:choicesfile}{p_end}
|
||||
|
||||
{syntab:Fields}
|
||||
{synopt:{opt drop:attrib(headers)}}do not import field attributes with
|
||||
the column headers {it:headers}{p_end}
|
||||
{synopt:{opt keep:attrib(headers)}}import only field attributes with
|
||||
the column headers {it:headers}{p_end}
|
||||
{synopt:{opt rel:ax}}ignore fields in {it:surveyfile} that
|
||||
do not exist in {it:csvfile}{p_end}
|
||||
|
||||
{syntab:Lists}
|
||||
{* Using -help ca- as a template.}{...}
|
||||
{synopt:{cmdab:oth:er(}{it:{help odkmeta##other:other}}{cmd:)}}Stata value of
|
||||
{cmd:other} values of {cmd:select or_other} fields; default is {cmd:max}{p_end}
|
||||
{synopt:{opt one:line}}write each list on a single line{p_end}
|
||||
|
||||
{syntab:Options}
|
||||
{synopt:{opt replace}}overwrite existing {it:{help filename}}{p_end}
|
||||
{synoptline}
|
||||
{p2colreset}{...}
|
||||
{* Using -help heckman- as a template.}{...}
|
||||
{p 4 6 2}* {opt csv()}, {opt survey()}, and {opt choices()} are required.{p_end}
|
||||
|
||||
{marker surveyopts}{...}
|
||||
{* Change in {synoptset}: using -help odbc- as a template.}{...}
|
||||
{synoptset 23 tabbed}{...}
|
||||
{synopthdr:surveyopts}
|
||||
{synoptline}
|
||||
{syntab:Main}
|
||||
{synopt:{opt t:ype(header)}}column header of the {it:type} field attribute;
|
||||
default is {cmd:type}{p_end}
|
||||
{synopt:{opt name(header)}}column header of the {it:name} field attribute;
|
||||
default is {cmd:name}{p_end}
|
||||
{synopt:{opt la:bel(header)}}column header of the {it:label} field attribute;
|
||||
default is {cmd:label}{p_end}
|
||||
{synopt:{opt d:isabled(header)}}column header of
|
||||
the {it:disabled} field attribute; default is {cmd:disabled}{p_end}
|
||||
{synoptline}
|
||||
{p2colreset}{...}
|
||||
|
||||
{marker choicesopts}{...}
|
||||
{synoptset 23 tabbed}{...}
|
||||
{synopthdr:choicesopts}
|
||||
{synoptline}
|
||||
{syntab:Main}
|
||||
{synopt:{opt li:stname(header)}}column header of
|
||||
the {it:list_name} list attribute; default is {cmd:list_name}{p_end}
|
||||
{synopt:{opt name(header)}}column header of the {it:name} list attribute;
|
||||
default is {cmd:name}{p_end}
|
||||
{synopt:{opt la:bel(header)}}column header of the {it:label} list attribute;
|
||||
default is {cmd:label}{p_end}
|
||||
{synoptline}
|
||||
{p2colreset}{...}
|
||||
|
||||
{marker other}{...}
|
||||
{synoptset 23 tabbed}{...}
|
||||
{synopthdr:other}
|
||||
{synoptline}
|
||||
{synopt:{opt max}}maximum value of each list: maximum list value plus one{p_end}
|
||||
{synopt:{opt min}}minimum value of each list: minimum list value minus
|
||||
one{p_end}
|
||||
{synopt:{it:#}}constant value for all value labels{p_end}
|
||||
{synoptline}
|
||||
{p2colreset}{...}
|
||||
|
||||
|
||||
{marker description}{...}
|
||||
{title:Description}
|
||||
|
||||
{pstd}
|
||||
{cmd:odkmeta} creates a do-file to import ODK data,
|
||||
using the metadata from the {it:survey} and {it:choices} worksheets of
|
||||
the XLSForm. The do-file, saved to {it:filename},
|
||||
completes the following tasks in order:
|
||||
|
||||
{* Using -help anova- as a template.}{...}
|
||||
{phang2}o Import lists as {help label:value labels}{p_end}
|
||||
{phang2}o Add {cmd:other} values to value labels{p_end}
|
||||
{phang2}o Import field attributes as {help char:characteristics}{p_end}
|
||||
{phang2}o Split {cmd:select_multiple} variables{p_end}
|
||||
{phang2}o Drop {cmd:note} variables{p_end}
|
||||
{phang2}o {help format:Format} {cmd:date}, {cmd:time}, and
|
||||
{cmd:datetime} variables{p_end}
|
||||
{phang2}o Attach value labels{p_end}
|
||||
{phang2}o Attach field labels as
|
||||
{help label:variable labels} and {help notes}{p_end}
|
||||
{phang2}o {help merge:Merge} repeat groups{p_end}
|
||||
|
||||
{pstd}
|
||||
After {cmd:select_multiple} variables have been split,
|
||||
tasks can be removed from the do-file without affecting other tasks.
|
||||
User-written supplements to the do-file may make use of any field attributes,
|
||||
which are imported as characteristics.
|
||||
|
||||
|
||||
{marker remarks}{...}
|
||||
{title:Remarks}
|
||||
|
||||
{pstd}
|
||||
The {cmd:odkmeta} do-file uses {helpb insheet} to import data.
|
||||
Fields that are long strings of digits, such as {cmd:simserial} fields,
|
||||
will be imported as numeric even if they are more than 16 digits.
|
||||
As a result, they will lose {help precision}.
|
||||
|
||||
{pstd}
|
||||
The do-file makes limited use of {help mata:Mata} to
|
||||
manage variable labels, value labels, and characteristics and
|
||||
to import field attributes and lists that contain difficult characters.
|
||||
|
||||
{pstd}
|
||||
The do-file starts with the definitions of several {help local:local macros};
|
||||
these are constants that the do-file uses.
|
||||
For instance, local macro {cmd:`datemask'} is the {help date():mask} of
|
||||
date values in the .csv files.
|
||||
The local macros are automatically set to default values, but
|
||||
they may need to be changed depending on the data.
|
||||
|
||||
|
||||
{* Using xtdpd_postspecial2b.ihlp as a template.}{...}
|
||||
{marker remarks_field_names}{...}
|
||||
{title:Remarks for field names}
|
||||
|
||||
{pstd}
|
||||
ODK field names follow different conventions from
|
||||
Stata's {help varname:constraints on variable names}.
|
||||
Further, the field names in the .csv files are the fields' "long names,"
|
||||
which are formed by concatenating the list of the {it:groups}
|
||||
in which the field is nested with the field's "short name."
|
||||
ODK long names are often much longer than the length limit on variable names,
|
||||
which is 32 characters.
|
||||
|
||||
{pstd}
|
||||
These differences in convention lead to three kinds of
|
||||
problematic field names:
|
||||
|
||||
{* Using -help 663- as a template.}{...}
|
||||
{phang2}1. Long field names that involve an invalid combination of characters,
|
||||
for example, a name that begins with a colon followed by a number.
|
||||
{helpb insheet} will not convert these to Stata names,
|
||||
instead naming each variable {cmd:v} concatenated with a positive integer,
|
||||
for example, {cmd:v1}.{p_end}
|
||||
{phang2}2. Long field names that are unique ODK names but
|
||||
when converted to Stata names and truncated to 32 characters become duplicates.
|
||||
{cmd:insheet} will again convert these to {cmd:v}{it:#} names.{p_end}
|
||||
{phang2}3. Long field names of the form {cmd:v}{it:#} that
|
||||
become duplicates with other variables that cannot be converted,
|
||||
for which {cmd:insheet} chooses {cmd:v}{it:#} names.
|
||||
These will be converted to different {cmd:v}{it:#} names.{p_end}
|
||||
|
||||
{pstd}
|
||||
Because of problem 3,
|
||||
it is recommended that you do not name fields as {cmd:v}{it:#}.
|
||||
|
||||
{pstd}
|
||||
If a field name cannot be imported,
|
||||
its characteristic {helpb odkmeta##Odk_bad_name:Odk_bad_name} is {cmd:1};
|
||||
otherwise it is {cmd:0}.
|
||||
|
||||
{pstd}
|
||||
Most tasks that the {cmd:odkmeta} do-file completes do not depend on
|
||||
variable names. There are two exceptions:
|
||||
|
||||
{phang2}1. The do-file uses {helpb split} to split
|
||||
{cmd:select_multiple} variables. {cmd:split} will result in an error
|
||||
if a {cmd:select_multiple} variable has a long name or
|
||||
if splitting it would result in duplicate variable names.{p_end}
|
||||
{phang2}2. The do-file uses {helpb reshape} and {helpb merge} to merge
|
||||
repeat groups. {cmd:reshape} will result in an error
|
||||
if there are long variable names. The merging code will result in an error
|
||||
if there are duplicate variable names in two datasets.{p_end}
|
||||
|
||||
{pstd}
|
||||
Where variable names result in an error, renaming is left to the user.
|
||||
The section of the do-file for splitting is preceded by
|
||||
a designated area for renaming.
|
||||
In the section for reshaping and merging, each repeat group has
|
||||
its own area for renaming.
|
||||
|
||||
{pstd}
|
||||
Many forms do not require any variable renaming.
|
||||
For others, only a few variables need to be renamed;
|
||||
such renaming should go in the designated areas.
|
||||
However, some forms,
|
||||
usually because of many nested groups or groups with long names,
|
||||
have many long field names that become duplicate Stata names (problem 2 above).
|
||||
In this case, it may work best to use fields' short names where possible.
|
||||
The following code attempts to rename variables to their field short names.
|
||||
Place it as-is before the renaming for {cmd:split}:
|
||||
|
||||
{cmd}{...}
|
||||
{phang}foreach var of varlist _all {{p_end}
|
||||
{phang2}if "`:char `var'[Odk_group]'" != "" {{p_end}
|
||||
{phang3}local name = "`:char `var'[Odk_name]'" + ///{p_end}
|
||||
{p 16 20 2}cond(`:char `var'[Odk_is_other]', "_other", "") + ///{p_end}
|
||||
{p 16 20 2}"`:char `var'[Odk_geopoint]'"{p_end}
|
||||
{phang3}local newvar = strtoname("`name'"){p_end}
|
||||
{phang3}capture rename `var' `newvar'{p_end}
|
||||
{phang2}}{p_end}
|
||||
{phang}}{p_end}
|
||||
{txt}{...}
|
||||
|
||||
|
||||
{marker remarks_lists}{...}
|
||||
{title:Remarks for lists}
|
||||
|
||||
{pstd}
|
||||
ODK list names are not necessarily valid Stata names.
|
||||
However, {cmd:odkmeta} uses list names as value label names, and
|
||||
it requires that all ODK list names be Stata names.
|
||||
|
||||
{pstd}
|
||||
ODK lists are lists of associations of names and labels.
|
||||
There are two broad categories of lists:
|
||||
those whose names are all integer and those with at least one noninteger name.
|
||||
In the former case, the values of the value label are
|
||||
the same as the names of the list.
|
||||
In the latter, the values of the value label indicate
|
||||
the order of the names within the list:
|
||||
the first name will equal {cmd:1}, the second {cmd:2}, and so on.
|
||||
For such lists, the value of the value label may differ
|
||||
from the name of the list even if the name is a valid value label value;
|
||||
what matters is whether all names of the list are integer.
|
||||
|
||||
{pstd}
|
||||
However, the value labels of these lists are easy to modify.
|
||||
Simply change the values of the value labels in the do-file;
|
||||
the rest of the do-file will be unaffected.
|
||||
Do not change the value label text.
|
||||
|
||||
{pstd}
|
||||
Certain names do not interact well with {helpb insheet},
|
||||
which the {cmd:odkmeta} do-file uses to import the data.
|
||||
|
||||
{pstd}
|
||||
For instance, it is not always possible to distinguish a name of {cmd:"."} from
|
||||
{helpb missing:sysmiss}. When it is unclear, the do-file assumes that
|
||||
values equal the name {cmd:"."} and not {cmd:sysmiss}.
|
||||
The problem arises when {cmd:insheet} imports {cmd:select} fields whose
|
||||
names in the data are the same as the values of a Stata numeric variable:
|
||||
real numbers, {cmd:sysmiss}, and {help missing:extended missing values}.
|
||||
{cmd:insheet} imports such fields as numeric,
|
||||
converting blank values ({cmd:""}) as {cmd:sysmiss},
|
||||
thereby using the same Stata value for the name {cmd:"."} and for blank values.
|
||||
|
||||
{pstd}
|
||||
{cmd:insheet} does not always interact well with list values' names that
|
||||
look like numbers with leading zeros, for example, {cmd:01} or {cmd:0.5}.
|
||||
If {cmd:insheet} imports a {cmd:select} field as numeric,
|
||||
it will remove such leading zeros, leading to incorrect values or
|
||||
an error in the do-file. For similar reasons,
|
||||
trailing zeros after a decimal point may be problematic.
|
||||
|
||||
{pstd}
|
||||
List values' names that look like decimals may also not interact well with
|
||||
{cmd:insheet}. If {cmd:insheet} imports a {cmd:select} field as numeric,
|
||||
the do-file will convert it to string. However, for {help precision} reasons,
|
||||
the resulting string may differ from the original name
|
||||
if the decimal has no exact finite-digit representation in binary.
|
||||
|
||||
{pstd}
|
||||
Generally, names that look like numbers that cannot be stored precisely as
|
||||
{helpb data_types:double} are problematic.
|
||||
This includes numbers large in magnitude.
|
||||
|
||||
|
||||
{marker remarks_variants}{...}
|
||||
{title:Remarks for ODK variants}
|
||||
|
||||
{pstd}
|
||||
{cmd:odkmeta} is not designed for features specific to ODK variants,
|
||||
such as SurveyCTO or formhub.
|
||||
However, it is often possible to modify the {cmd:odkmeta} do-file to account
|
||||
for these features,
|
||||
especially as all field attributes are imported as characteristics.
|
||||
|
||||
{pstd}
|
||||
{ul:SurveyCTO}
|
||||
|
||||
{pstd}
|
||||
For instance, the {cmd:odkmeta} do-file will result in an error for
|
||||
SurveyCTO forms that contain dynamic choice lists.
|
||||
One solution is to make the following changes to the do-file in order
|
||||
to import {cmd:select} fields with dynamic lists as string variables.
|
||||
|
||||
{pstd}
|
||||
One section of the {cmd:odkmeta} do-file encodes
|
||||
{cmd:select} fields whose list contains a noninteger name.
|
||||
Here, remove dynamic lists from the list of such lists:
|
||||
|
||||
{phang}{cmd:* Encode fields whose list contains a noninteger name.}{p_end}
|
||||
{phang}{cmd:local lists list1 list2 list3 ...}{p_end}
|
||||
{phang}...{p_end}
|
||||
|
||||
{pstd}
|
||||
Above, if {cmd:list3} were a dynamic list, it should be removed.
|
||||
|
||||
{pstd}
|
||||
The next section of the do-file attaches value labels to variables:
|
||||
|
||||
{cmd}{...}
|
||||
{phang}* Attach value labels.{p_end}
|
||||
{phang}ds, not(vallab){p_end}
|
||||
{phang}if "`r(varlist)'" != "" ///{p_end}
|
||||
{phang2}ds `r(varlist)', has(char Odk_list_name){p_end}
|
||||
{phang}foreach var in `r(varlist)' {{p_end}
|
||||
{phang2}if !`:char `var'[Odk_is_other]' {{p_end}
|
||||
{phang}...{p_end}
|
||||
{txt}{...}
|
||||
|
||||
{pstd}
|
||||
Add a line to the second {helpb ifcmd:if} command to exclude fields whose
|
||||
{it:appearance} attribute contains a {cmd:search()} expression:
|
||||
|
||||
{cmd}{...}
|
||||
{phang}* Attach value labels.{p_end}
|
||||
{phang}ds, not(vallab){p_end}
|
||||
{phang}if "`r(varlist)'" != "" ///{p_end}
|
||||
{phang2}ds `r(varlist)', has(char Odk_list_name){p_end}
|
||||
{phang}foreach var in `r(varlist)' {{p_end}
|
||||
{phang2}if !`:char `var'[Odk_is_other]' & ///{p_end}
|
||||
{phang3}!strmatch("`:char `var'[Odk_appearance]'", "*search(*)*") {{p_end}
|
||||
{phang}...{p_end}
|
||||
{txt}{...}
|
||||
|
||||
{pstd}
|
||||
The do-file will now import fields with dynamic lists without
|
||||
resulting in an error.
|
||||
|
||||
{pstd}
|
||||
{ul:formhub}
|
||||
|
||||
{pstd}
|
||||
formhub does not export {cmd:note} fields in the .csv files;
|
||||
specify option {cmd:relax} to {cmd:odkmeta}.
|
||||
|
||||
{pstd}
|
||||
formhub exports blank values as {cmd:"n/a"}.
|
||||
Multiple sections of the {cmd:odkmeta} do-file must be modified
|
||||
to accommodate these.
|
||||
|
||||
{pstd}
|
||||
Immediately before this line in the section for
|
||||
formatting {cmd:date}, {cmd:time}, and {cmd:datetime} variables:
|
||||
|
||||
{phang}
|
||||
{cmd:if inlist("`type'", "date", "today") {c -(}}
|
||||
|
||||
{pstd}
|
||||
add the following line:
|
||||
|
||||
{phang}
|
||||
{cmd:replace `var' = "" if `var' == "n/a"}
|
||||
|
||||
{pstd}
|
||||
Immediately before this line in the section for attaching value labels:
|
||||
|
||||
{phang}
|
||||
{cmd:replace `var' = ".o" if `var' == "other"}
|
||||
|
||||
{pstd}
|
||||
add the following line:
|
||||
|
||||
{phang}
|
||||
{cmd:replace `var' = "" if `var' == "n/a"}
|
||||
|
||||
{pstd}
|
||||
These lines replace {cmd:"n/a"} values with blank ({cmd:""}).
|
||||
|
||||
|
||||
{marker remarks_missing}{...}
|
||||
{title:Remarks for "don't know," refusal, and other missing values}
|
||||
|
||||
{pstd}
|
||||
ODK lists may contain missing values, including "don't know" and refusal values.
|
||||
These will be imported as nonmissing in Stata.
|
||||
However, if the lists use largely consistent names or labels for the values,
|
||||
it may be possible to automate the conversion of the values to
|
||||
{help missing:extended missing values} in Stata.
|
||||
The following {help SSC} programs may be helpful:
|
||||
|
||||
{p2colset 5 18 22 2}{...}
|
||||
{p2col:{cmd:labmvs}}{bf:{stata ssc install labutil2}}{p_end}
|
||||
{p2col:{cmd:labmv}}{bf:{stata ssc install labutil2}}{p_end}
|
||||
{p2col:{cmd:labrecode}}{bf:{stata ssc install labutil2}}{p_end}
|
||||
{p2col:{cmd:labelmiss}}{bf:{stata ssc install labelmiss}}{p_end}
|
||||
{p2colreset}{...}
|
||||
|
||||
|
||||
{marker options}{...}
|
||||
{title:Options}
|
||||
|
||||
{dlgtab:Main}
|
||||
|
||||
{phang}
|
||||
{cmd:survey(}{it:surveyfile}{cmd:,} {it:surveyopts}{cmd:)} imports
|
||||
the field metadata from the XLSForm's {it:survey} worksheet.
|
||||
{opt survey()} requires {it:surveyfile} to be a comma-separated text file.
|
||||
Strings with embedded commas, double quotes, or end-of-line characters must
|
||||
be enclosed in quotes, and
|
||||
embedded double quotes must be preceded by another double quote.
|
||||
|
||||
{pmore}
|
||||
Each attribute in the {it:survey} worksheet has
|
||||
its own column and column header.
|
||||
Use the suboptions {opt type()}, {opt name()}, {opt label()}, and
|
||||
{opt disabled()} to specify alternative column headers for
|
||||
the {it:type}, {it:name}, {it:label}, and
|
||||
{it:disabled} attributes, respectively.
|
||||
All field attributes are imported as {help char:characteristics}.
|
||||
|
||||
{pmore}
|
||||
If the {it:survey} worksheet has duplicate column headers,
|
||||
only the first column for each column header is used.
|
||||
|
||||
{pmore}
|
||||
The {it:type} characteristic is standardized as follows:
|
||||
|
||||
{phang2}o {cmd:select one} is replaced as {cmd:select_one}.{p_end}
|
||||
{phang2}o {cmd:select or other} is replaced as {cmd:select or_other}:
|
||||
{cmd:select_one} {it:list_name} {cmd:or other} is replaced as
|
||||
{cmd:select_one} {it:list_name} {cmd:or_other}, and
|
||||
{cmd:select_multiple} {it:list_name} {cmd:or other} is replaced as
|
||||
{cmd:select_multiple} {it:list_name} {cmd:or_other}.{p_end}
|
||||
{phang2}o {cmd:begin_group} is replaced as {cmd:begin group};
|
||||
{cmd:end_group} is replaced as {cmd:end group};
|
||||
{cmd:begin_repeat} is replaced as {cmd:begin repeat};
|
||||
and {cmd:end_repeat} is replaced as {cmd:end repeat}.{p_end}
|
||||
|
||||
{pmore}
|
||||
In addition to the attributes specified in the {it:survey} worksheet,
|
||||
{cmd:odkmeta} attaches these characteristics to variables:
|
||||
|
||||
{pmore2}
|
||||
{marker Odk_bad_name}{...}
|
||||
{cmd:Odk_bad_name} is {cmd:1}
|
||||
if the variable's name differs from its ODK field name and {cmd:0} if not.
|
||||
See the {help odkmeta##remarks_field_names:remarks for field names} above.
|
||||
|
||||
{pmore2}
|
||||
{cmd:Odk_group} contains a list of the {it:groups}
|
||||
in which the variable is nested, in order of the {it:group} level.
|
||||
|
||||
{pmore2}
|
||||
{cmd:Odk_long_name} contains the field's "long name,"
|
||||
which is formed by concatenating
|
||||
the list of the {it:groups} in which the field is nested
|
||||
with the field "short name," with elements separated by {cmd:"-"}.
|
||||
|
||||
{pmore2}
|
||||
{cmd:Odk_repeat} contains the (long) name of the repeat group
|
||||
in which the variable is nested.
|
||||
|
||||
{pmore2}
|
||||
{cmd:Odk_list_name} contains the name of a {cmd:select} field's list.
|
||||
|
||||
{pmore2}
|
||||
{cmd:Odk_or_other} is {cmd:1}
|
||||
if the variable is a {cmd:select or_other} field and {cmd:0} if not.
|
||||
|
||||
{pmore2}
|
||||
{cmd:Odk_is_other} is {cmd:1}
|
||||
if the variable is a free-text {cmd:other} variable associated with
|
||||
a {cmd:select or_other} field; otherwise it is {cmd:0}.
|
||||
|
||||
{pmore2}
|
||||
For {cmd:geopoint} variables, {cmd:Odk_geopoint} is
|
||||
the variable's {cmd:geopoint} component:
|
||||
{cmd:Latitude}, {cmd:Longitude}, {cmd:Altitude}, or {cmd:Accuracy}.
|
||||
For variables that are not type {cmd:geopoint}, {cmd:Odk_geopoint} is blank.
|
||||
|
||||
{phang}
|
||||
{cmd:choices(}{it:choicesfile}{cmd:,} {it:choicesopts}{cmd:)} imports
|
||||
the list metadata from the XLSForm's {it:choices} worksheet.
|
||||
{cmd:choices()} requires {it:choicesfile} to be a comma-separated text file.
|
||||
Strings with embedded commas, double quotes, or end-of-line characters must
|
||||
be enclosed in quotes, and
|
||||
embedded double quotes must be preceded by another double quote.
|
||||
|
||||
{pmore}
|
||||
Each attribute in the {it:choices} worksheet has
|
||||
its own column and column header.
|
||||
Use the suboptions {opt listname()}, {opt name()}, and {opt label()} to specify
|
||||
alternative column headers for the {it:list_name}, {it:name}, and
|
||||
{it:label} attributes, respectively.
|
||||
List attributes are imported as value labels.
|
||||
|
||||
{pmore}
|
||||
If the {it:choices} worksheet has duplicate column headers,
|
||||
only the first column for each column header is used.
|
||||
|
||||
{dlgtab:Fields}
|
||||
|
||||
{phang}
|
||||
{opt dropattrib(headers)} specifies the column headers of field attributes that
|
||||
should not be imported as characteristics.
|
||||
{cmd:_all} specifies that all characteristics be dropped.
|
||||
|
||||
{phang}
|
||||
{opt keepattrib(headers)} specifies the column headers of
|
||||
field attributes to import as characteristics.
|
||||
{cmd:_all} means all column headers. Other attributes are not imported.
|
||||
|
||||
{phang}
|
||||
{opt relax} specifies that fields mentioned in {it:surveyfile} that
|
||||
do not exist in {it:csvfile} be ignored.
|
||||
By default, the do-file attempts to attach the characteristics to
|
||||
these variables, resulting in an error if the variable does not exist.
|
||||
For fields associated with multiple variables, for example,
|
||||
{cmd:geopoint} fields, {opt relax} attempts to attach
|
||||
the characteristics to as many variables as possible:
|
||||
an error does not result if some but not all variables exist.
|
||||
|
||||
{dlgtab:Lists}
|
||||
|
||||
{phang}
|
||||
{opt other(other)} specifies the Stata value of {cmd:other} values of
|
||||
{cmd:select or_other} fields.
|
||||
|
||||
{pmore}
|
||||
{cmd:max}, the default, specifies that the Stata value of {cmd:other} vary by
|
||||
the field's list.
|
||||
For each list, {cmd:other} will be the maximum value of the list plus one.
|
||||
|
||||
{pmore}
|
||||
{cmd:min} specifies that the Stata value of {cmd:other} vary by
|
||||
the field's list.
|
||||
For each list, {cmd:other} will be the minimum value of the list minus one.
|
||||
|
||||
{pmore}
|
||||
{it:#} specifies a constant value for {cmd:other} that
|
||||
will be used for all lists.
|
||||
|
||||
{phang}
|
||||
{opt oneline} specifies that each list's value label definition be written on
|
||||
one line, rather than on multiple using {helpb delimit:#delimit ;}.
|
||||
|
||||
{dlgtab:Other}
|
||||
|
||||
{phang}
|
||||
{opt replace} specifies that the {cmd:odkmeta} do-file be replaced
|
||||
if it already exists.
|
||||
|
||||
|
||||
{marker examples}{...}
|
||||
{title:Examples}
|
||||
|
||||
{pstd}
|
||||
Create a do-file named {cmd:import.do} that imports ODK data,
|
||||
including the metadata in {cmd:survey.csv} and {cmd:choices.csv}
|
||||
{p_end}
|
||||
{phang2}{cmd}
|
||||
. odkmeta using import.do,
|
||||
csv("ODKexample.csv") survey("survey.csv") choices("choices.csv")
|
||||
{txt}
|
||||
|
||||
{pstd}
|
||||
Same as the previous {cmd:odkmeta} command,
|
||||
but specifies that the field {it:name} attribute appears in
|
||||
the {cmd:fieldname} column of {cmd:survey_fieldname.csv}
|
||||
{p_end}
|
||||
{phang2}{cmd}
|
||||
. odkmeta using import.do,
|
||||
csv("ODKexample.csv") survey("survey_fieldname.csv", name(fieldname))
|
||||
choices("choices.csv") replace
|
||||
{txt}
|
||||
|
||||
{pstd}
|
||||
Same as the previous {cmd:odkmeta} command,
|
||||
but specifies that the list {it:name} attribute appears in
|
||||
the {cmd:valuename} column of {cmd:choices_valuename.csv}
|
||||
{p_end}
|
||||
{phang2}{cmd}
|
||||
. odkmeta using import.do,
|
||||
csv("ODKexample.csv") survey("survey_fieldname.csv", name(fieldname))
|
||||
choices("choices_valuename.csv", name(valuename)) replace
|
||||
{txt}
|
||||
|
||||
{pstd}
|
||||
Create a do-file that imports all field attributes except for {it:hint}
|
||||
{p_end}
|
||||
{phang2}{cmd}
|
||||
. odkmeta using import.do,
|
||||
csv("ODKexample.csv") survey("survey.csv") choices("choices.csv")
|
||||
dropattrib(hint) replace
|
||||
{txt}
|
||||
|
||||
{pstd}
|
||||
Same as the previous {cmd:odkmeta} command,
|
||||
but does not import any field attributes
|
||||
{p_end}
|
||||
{phang2}{cmd}
|
||||
. odkmeta using import.do,
|
||||
csv("ODKexample.csv") survey("survey.csv") choices("choices.csv")
|
||||
dropattrib(_all) replace
|
||||
{txt}
|
||||
|
||||
{pstd}
|
||||
Create a do-file that
|
||||
imports {cmd:other} values of {cmd:select or_other} fields as {cmd:99}
|
||||
{p_end}
|
||||
{phang2}{cmd}
|
||||
. odkmeta using import.do,
|
||||
csv("ODKexample.csv") survey("survey.csv") choices("choices.csv")
|
||||
other(99) replace
|
||||
{txt}
|
||||
|
||||
|
||||
{marker acknowledgements}{...}
|
||||
{title:Acknowledgements}
|
||||
|
||||
{pstd}
|
||||
Lindsey Shaughnessy of Innovations for Poverty Action assisted in
|
||||
almost all aspects of {cmd:odkmeta}'s development.
|
||||
She collaborated on the structure of the program, was a very helpful tester, and
|
||||
contributed information about ODK.
|
||||
|
||||
|
||||
{marker author}{...}
|
||||
{title:Author}
|
||||
|
||||
{pstd}Matthew White, Innovations for Poverty Action{p_end}
|
||||
{pstd}mwhite@poverty-action.org{p_end}
|
||||
Reference in New Issue
Block a user