[R] Reorganize the data (dplyr or other packages?)

Bert Gunter bgunter@4567 @end|ng |rom gm@||@com
Mon Aug 17 19:09:58 CEST 2020


Well, not that there is anything "wrong" with previous suggestions, but it
is pretty straightforward just with base R functionality:

> nm <- names(tab)[2:4]
> with(tab, data.frame(date = rep(date, length(nm)),
+                     direction = rep(nm, e = 3),
+                     percentage = do.call(c, tab[, nm]))
+     )
         date direction percentage
down1 2019M08      down 0.01709827
down2 2019M09      down 0.02094724
down3 2019M10      down 0.01750911
uc1   2019M08        uc 0.26538820
uc2   2019M09        uc 0.22657970
uc3   2019M10        uc 0.24500300
up1   2019M08        up 0.71751360
up2   2019M09        up 0.75247310
up3   2019M10        up 0.73748790


Cheers,
Bert

Bert Gunter

"The trouble with having an open mind is that people keep coming along and
sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Mon, Aug 17, 2020 at 9:53 AM Rasmus Liland <jral using posteo.no> wrote:

> Dear John,
>
> Op ma 17 aug. 2020 om 09:52 schreef Eric Berger:
> | On Mon, Aug 17, 2020 at 10:49 AM Thierry Onkelinx wrote:
> | |
> | | You are looking for tidyr::pivot_longer()
> |
> | Alternatively, melt() from the reshape2 package.
> |
> | library(reshape2)
> | melt(x,id.vars="date",measure.vars=c("down","uc","up"),variable.name
> | ="direction",value.name="percentage")
>
> Also, stack is also possible to use:
>
>         tab <- structure(list(
>         date = c("2019M08", "2019M09", "2019M10"),
>         down = c(0.01709827, 0.02094724, 0.01750911),
>         uc = c(0.2653882, 0.2265797, 0.245003),
>         up = c(0.7175136, 0.7524731, 0.7374879)),
>         class = "data.frame", row.names = c(NA, -3L))
>
>         out <- utils::stack(x=tab, select=-date)
>         colnames(out) <- c("percentage", "direction")
>         out$date <- tab$date
>         out <- out[,sort(colnames(out))]
>
>         out
>
> yields
>
>              date direction percentage
>         1 2019M08      down 0.01709827
>         2 2019M09      down 0.02094724
>         3 2019M10      down 0.01750911
>         4 2019M08        uc 0.26538820
>         5 2019M09        uc 0.22657970
>         6 2019M10        uc 0.24500300
>         7 2019M08        up 0.71751360
>         8 2019M09        up 0.75247310
>         9 2019M10        up 0.73748790
>
> On 2020-08-17 07:46 -0500, Hadley Wickham wrote:
> | On Mon, Aug 17, 2020 at 11:23 AM Thierry Onkelinx wrote:
> | |
> | | reshape2 is a retired package. The
> | | author recommends to use his new
> | | package tidyr.
> |
> | We previously used the term retired to
> | suggest that the package is taking it
> | easy and relaxing, but isn't dead.
>
> Haha :)
>
> | This causes a lot of confusion so we
> | now call this state "superseded" —
> | we'll continue to keep reshape2 (and
> | reshape!) on CRAN
>
> Good!
>
> | but they won't receive any new
> | features, and we believe that there
> | are now better approaches to solving
> | the same problem.
>
> Is tidyr::pivot_longer this better
> solution?  It is an easier to understand
> version of the now retired and confusing
> (for me) tidyr::gather which at least
> reigned back in 2018 (was that any good
> compared to reshape?).
>
> Best,
> Rasmus
> ______________________________________________
> 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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list