[R] How to represent tree-structured values
Jan van der Laan
rhe|p @end|ng |rom eoo@@dd@@n|
Mon May 30 08:07:46 CEST 2022
The most common way of handling this, from what I have seen, and what I
am also using myself, is to have multiple columns; one for each level of
the tree. So in your example you would have (at least) five columns. A
records with an injury to their dominant hand would have the following
values in these columns:
level0: injuries
level1: injuries to limbs
level2: injuries to extremities
level3: injuries to hands
level4: injuries to dominant hand
That way you can easily aggregate to each of the levels. This solution
becomes slightly more difficult if not each branch of the tree has the
same depth. You can use NA's to fill non-existing levels.
Often these types of variables come with codes that have a nesting
structure. For example, in the regional codes we use, the first 4 digits
are the municipality, the next two the city district and the next two
the neighbourhood. So neighbourhoods have 6 digit codes. If I want to
aggregate to municipality I can take the first 4 digits (substr). That
way I only need one column and can calculate the others when needed.
However, aggregating to municipality is so common that I often end up
with a separate column anyway.
In a hackaton at the uros-conference a while back, we did try to make a
new type for this (https://github.com/uRosConf/categorical) but this
never got completed enough to push to CRAN.
HTH,
Jan
On 30-05-2022 06:54, Richard O'Keefe wrote:
> There is a kind of data I run into fairly often
> which I have never known how to represent in R,
> and nothing I've tried really satisfies me.
>
> Consider for example
> ...
> - injuries
> ...
> - injuries to limbs
> ...
> - injuries to extremities
> ...
> - injuries to hands
> - injuries to dominant hand
> - injuries to non-dominant hand
> ...
> ...
> ...
>
> This isn't ordinal data, because there is no
> "left to right" order on the values. But there
> IS a "part/whole" order, which an analysis should
> respect, so it's not pure nominal data either.
>
> As one particular example, if I want to
> tabulate data like this, an occurrence of one
> value should be counted as an occurrence of
> *every* superordinate value.
>
> Examples of such data include "why is this patient
> being treated", "what drug is this patient being
> treated with", "what geographic region is this
> school from", "what biological group does this
> insect belong to".
>
> So what is the recommended way to represent
> and the recommended way to analyse such data in R?
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list