Search code examples
rdplyrtidyversehierarchyhierarchical-data

How do I convert a hierarchical dataframe to a list in R?


If I had a hierarchical dataframe like this:

level_1<-c("a","a","a","b","c","c")
level_2<-c("flower","flower","tree","mushroom","dog","cat")
level_3<-c("rose","sunflower","pine",NA,"spaniel",NA)
level_4<-c("pink",NA,NA,NA,NA,NA)
df<-data.frame(level_1,level_2,level_3,level_4)

How do I convert this to a list which orders according to the hierarchy, like this:

> list
 [1] "a"         "flower"    "rose"      "pink"      "sunflower" "tree"      "pine"      "b"         "mushroom"  "c"        
[11] "dog"       "spaniel"   "c"         "cat"      

So for in value in level 1, it list all level 2 values expanded across the other levels. Hopefully that makes sense?

Thanks in advance!


Solution

  • We can try this

    > unique(na.omit(c(t(df))))
     [1] "a"         "flower"    "rose"      "pink"      "sunflower" "tree"
     [7] "pine"      "b"         "mushroom"  "c"         "dog"       "spaniel"
    [13] "cat"