[R] Dplyr question
Rui Barradas
ru|pb@rr@d@@ @end|ng |rom @@po@pt
Tue Jun 21 20:46:05 CEST 2022
Hello,
Right, intuitive is (very) relative. I was thinking of base function
stats::reshape. Its main difficulty is, imho, to reshape to both wide
and long formats. Compared to it, tidyr::pivot_* are (much?) easier to
understand.
Here is a stats::reshape solution.
df_long <- reshape(
data = df1,
idvar = "Time_stamp",
varying = list(2:3),
v.names = "Measurement",
direction = "long")
df_long$time <- sort(names(df1)[-1])[df_long$time]
names(df_long)[2] <- "Location"
df_long
#> Time_stamp Location Measurement
#> Jun-10 10:34.1 Jun-10 10:34 P190-90D -0.000208
#> Jun-10 10:51.1 Jun-10 10:51 P190-90D -0.000228
#> Jun-10 11:02.1 Jun-10 11:02 P190-90D -0.000234
#> Jun-10 11:17.1 Jun-10 11:17 P190-90D -0.000220
#> Jun-10 11:25.1 Jun-10 11:25 P190-90D -0.000238
#> Jun-10 10:34.2 Jun-10 10:34 P1A0B0D -0.000195
#> Jun-10 10:51.2 Jun-10 10:51 P1A0B0D -0.000188
#> Jun-10 11:02.2 Jun-10 11:02 P1A0B0D -0.000204
#> Jun-10 11:17.2 Jun-10 11:17 P1A0B0D -0.000205
#> Jun-10 11:25.2 Jun-10 11:25 P1A0B0D -0.000195
Hope this helps,
Rui Barradas
Às 19:25 de 21/06/2022, Bert Gunter escreveu:
> Heh heh. Well "intuitiveness" is in the mind of the intuiter. ;-)
> One might even say that Jeff's and John's solutions were the most
> "intuitive" as they involved nothing more than the "straightforward"
> application of standard base R functionality. (Do note the scare quotes
> around 'straightforward'.) Of course, other factors may well be
> decisive, such as efficiency, generalizability to the *real* problem and
> data, and so forth.
>
> Best to all,
> Bert
>
> On Tue, Jun 21, 2022 at 10:50 AM Rui Barradas <ruipbarradas using sapo.pt
> <mailto:ruipbarradas using sapo.pt>> wrote:
>
> Hello,
>
> pivot_longer is a package tidyr function, not dplyr. I find its syntax
> very intuitive. Here is a solution.
>
>
>
> x <- "Time_stamp P1A0B0D P190-90D
> 'Jun-10 10:34' -0.000208 -0.000195
> 'Jun-10 10:51' -0.000228 -0.000188
> 'Jun-10 11:02' -0.000234 -0.000204
> 'Jun-10 11:17' -0.00022 -0.000205
> 'Jun-10 11:25' -0.000238 -0.000195"
> df1 <- read.table(textConnection(x), header = TRUE, check.names = FALSE)
>
> suppressPackageStartupMessages({
> library(dplyr)
> library(tidyr)
> })
>
> df1 %>%
> pivot_longer(
> cols = -Time_stamp, # or starts_with("P1")
> names_to = "Location",
> values_to = "Measurement"
> ) %>%
> arrange(desc(Location), Time_stamp)
> #> # A tibble: 10 × 3
> #> Time_stamp Location Measurement
> #> <chr> <chr> <dbl>
> #> 1 Jun-10 10:34 P1A0B0D -0.000208
> #> 2 Jun-10 10:51 P1A0B0D -0.000228
> #> 3 Jun-10 11:02 P1A0B0D -0.000234
> #> 4 Jun-10 11:17 P1A0B0D -0.00022
> #> 5 Jun-10 11:25 P1A0B0D -0.000238
> #> 6 Jun-10 10:34 P190-90D -0.000195
> #> 7 Jun-10 10:51 P190-90D -0.000188
> #> 8 Jun-10 11:02 P190-90D -0.000204
> #> 9 Jun-10 11:17 P190-90D -0.000205
> #> 10 Jun-10 11:25 P190-90D -0.000195
>
>
>
> Hope this helps,
>
> Rui Barradas
>
> Às 17:22 de 21/06/2022, Thomas Subia escreveu:
> > Colleagues:
> >
> > The header of my data set is:
> > Time_stamp P1A0B0D P190-90D
> > Jun-10 10:34 -0.000208 -0.000195
> > Jun-10 10:51 -0.000228 -0.000188
> > Jun-10 11:02 -0.000234 -0.000204
> > Jun-10 11:17 -0.00022 -0.000205
> > Jun-10 11:25 -0.000238 -0.000195
> >
> > I want my data set to resemble:
> >
> > Time_stamp Location Measurement
> > Jun-10 10:34 P1A0B0D -0.000208
> > Jun-10 10:51 P1A0B0D -0.000228
> > Jun-10 11:02 P1A0B0D -0.000234
> > Jun-10 11:17 P1A0B0D -0.00022
> > Jun-10 11:25 P1A0B0D -0.000238
> > Jun-10 10:34 P190-90D -0.000195
> > Jun-10 10:51 P190-90D -0.000188
> > Jun-10 11:02 P190-90D -0.000204
> > Jun-10 11:17 P190-90D -0.000205
> > Jun-10 11:25 P190-90D -0.000195
> >
> > I need some advice on how to do this using dplyr.
> >
> > V/R
> > Thomas Subia
> >
> > FM Industries, Inc. - NGK Electronics, USA | www.fmindustries.com
> <http://www.fmindustries.com>
> > 221 Warren Ave, Fremont, CA 94539
> >
> > "En Dieu nous avons confiance, tous les autres doivent apporter
> des donnees"
> >
> > ______________________________________________
> > R-help using r-project.org <mailto:R-help using r-project.org> mailing list
> -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
> <https://stat.ethz.ch/mailman/listinfo/r-help>
> > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> <http://www.R-project.org/posting-guide.html>
> > and provide commented, minimal, self-contained, reproducible code.
>
> ______________________________________________
> R-help using r-project.org <mailto:R-help using r-project.org> mailing list --
> To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> <https://stat.ethz.ch/mailman/listinfo/r-help>
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> <http://www.R-project.org/posting-guide.html>
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list