-
Notifications
You must be signed in to change notification settings - Fork 422
Closed
Labels
bugan unexpected problem or unintended behavioran unexpected problem or unintended behaviorpivoting ♻️pivot rectangular data to different "shapes"pivot rectangular data to different "shapes"
Description
When going from a wide dataset to long and then back, there seems to be an implicit sort that occurs on non key/value variables. This prevents the ability to recover an initial data set by undoing the gather() operation with spread().
Consider the following example:
library("tidyr")
(init_data = tibble::tibble(
Group = c("B", "C", "A"),
`Cost Week 1` = c(1, 2, 3),
`Cost Week 2` = c(4, 5, 6),
`Cost Week 3` = c(7, 8, 9)
))
#> # A tibble: 3 x 4
#> Group `Cost Week 1` `Cost Week 2` `Cost Week 3`
#> <chr> <dbl> <dbl> <dbl>
#> 1 B 1. 4. 7.
#> 2 C 2. 5. 8.
#> 3 A 3. 6. 9.
long = init_data %>%
gather(key = "Week", value = "Cost", -Group)
long
#> # A tibble: 9 x 3
#> Group Week Cost
#> <chr> <chr> <dbl>
#> 1 B Cost Week 1 1.
#> 2 C Cost Week 1 2.
#> 3 A Cost Week 1 3.
#> 4 B Cost Week 2 4.
#> 5 C Cost Week 2 5.
#> 6 A Cost Week 2 6.
#> 7 B Cost Week 3 7.
#> 8 C Cost Week 3 8.
#> 9 A Cost Week 3 9.
wide = long %>%
spread(key = "Week", value = "Cost")
wide
#> # A tibble: 3 x 4
#> Group `Cost Week 1` `Cost Week 2` `Cost Week 3`
#> <chr> <dbl> <dbl> <dbl>
#> 1 A 3. 6. 9.
#> 2 B 1. 4. 7.
#> 3 C 2. 5. 8.
init_data
#> # A tibble: 3 x 4
#> Group `Cost Week 1` `Cost Week 2` `Cost Week 3`
#> <chr> <dbl> <dbl> <dbl>
#> 1 B 1. 4. 7.
#> 2 C 2. 5. 8.
#> 3 A 3. 6. 9.elbersb, martijnvanattekum and vladtarko
Metadata
Metadata
Assignees
Labels
bugan unexpected problem or unintended behavioran unexpected problem or unintended behaviorpivoting ♻️pivot rectangular data to different "shapes"pivot rectangular data to different "shapes"