I have a data.table
that looks like this:
id A1g_hi A2g_hi A3g_hi A4g_hi
1 2 3 4 5
...
I would like to melt
this table so that it looks like this:
id time hi
1 1 2
1 2 3
1 3 4
1 4 5
...
I attempted something like this:
melt(dtb, measure.vars = patterns("^A"), value.name = "hi", variable.name="time")
which does not give me what I would like. Do I need to resort to string splitting here or are there native data.table
functions that do this?
I can suggest an easy
dplyr
+tidyr
solution.I raise my glass to @rawr who apparently understands the base-R
reshape
-function. For me it is an eternal mystery, despite many efforts at understanding its documentation and many efforts at solving problems with it. Despite my general disdain for the hadleyverse efforts at "simplifying" (but for me obfuscating) R by universal "nonstandardization", I find his invention of thereshape2::melt
-function to be a great aid in efficient manipulation.So: