[R] How to form groups for this specific problem?
jvadams at usgs.gov
Tue Mar 29 14:11:19 CEST 2016
You're welcome, Satish.
Yes, questions that are seeking solutions in R code are appropriate for
this group. It's helpful if you provide sample data (for example, using
dput()) and sample R code that folks can use. And it's helpful if you show
the results that you are hoping to achieve (as you did).
On Mon, Mar 28, 2016 at 1:15 PM, Satish Vadlamani <
satish.vadlamani at gmail.com> wrote:
> Wow. Thank you so much for this. I will read up igraph and then see if
> this is going to work for me for the larger dataset.
> Thanks for the wonderful snippet code you wrote. Basically, the
> requirement is this:
> TLA1 (Top Level Assembly) and its components should belong to the same
> group. If a component belongs to a different TLA (say TLA2), then that TLA1
> and all of its components should belong to the same as that of TLA1.
> Are these types of questions appropriate for this group?
> On Mar 28, 2016 9:10 AM, "Adams, Jean" <jvadams at usgs.gov> wrote:
>> If you rearrange your data into a network of nodes and edges, you can use
>> the igraph package to identify disconnected (mutually exclusive) groups.
>> # example data
>> df <- data.frame(
>> Component = c("C1", "C2", "C1", "C3", "C4", "C5"),
>> TLA = c("TLA1", "TLA1", "TLA2", "TLA2", "TLA3", "TLA3")
>> # characterize data as a network of nodes and edges
>> nodes <- levels(unlist(df))
>> edges <- apply(df, 2, match, nodes)
>> # use the igraph package to identify disconnected groups
>> g <- graph(edges)
>> ngroup <- clusters(g)$membership
>> df$Group <- ngroup[match(df$Component, nodes)]
>> Component TLA Group
>> 1 C1 TLA1 1
>> 2 C2 TLA1 1
>> 3 C1 TLA2 1
>> 4 C3 TLA2 1
>> 5 C4 TLA3 2
>> 6 C5 TLA3 2
>> On Sun, Mar 27, 2016 at 7:56 PM, Satish Vadlamani <
>> satish.vadlamani at gmail.com> wrote:
>>> Hello All:
>>> I would like to get some help with the following problem and understand
>>> this can be done in R efficiently. The header is given in the data frame.
>>> *Component, TLA*
>>> C1, TLA1
>>> C2, TLA1
>>> C1, TLA2
>>> C3, TLA2
>>> C4, TLA3
>>> C5, TLA3
>>> Notice that C1 is a component of TLA1 and TLA2.
>>> I would like to form groups of mutually exclusive subsets and create a
>>> column called group for this subset. For the above data, the subsets and
>>> the new group column value will be like so:
>>> *Component, TLA, Group*
>>> C1, TLA1, 1
>>> C2, TLA1, 1
>>> C1, TLA2, 1
>>> C3, TLA2, 1
>>> C4, TLA3, 2
>>> C5, TLA3, 2
>>> Appreciate any help on this. I could have looped through the observations
>>> and tried some logic but I did not try that yet.
>>> Satish Vadlamani
>>> [[alternative HTML version deleted]]
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> PLEASE do read the posting guide
>>> and provide commented, minimal, self-contained, reproducible code.
[[alternative HTML version deleted]]
More information about the R-help