Reorganize the data (dplyr or other packages?)
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 at 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 at 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.