[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