Лучшее решение для частичного pivot_longer - PullRequest
0 голосов
/ 10 апреля 2020

Я ищу что-то вроде частичного pivot_longer. Приведенный ниже пример работает, но он не изящен и запутывается, когда у меня больше столбцов _1, _2, _n. Кто-нибудь ищет домашний офис для решения проблемы?

library(tidyr)
library(dplyr)
#> 
#> Attache Paket: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
dt = tribble(
  ~pat, ~bmi_0, ~score_0, ~bmi_5, ~score_5,
  "a",25,30, 28, 43,
  "b",27,20, 21, 25,
  "c",28,21, 23, 21
)

dt_0 = dt %>% select(pat, bmi = bmi_0, score = score_0) %>% mutate(when="0")
dt_5 = dt %>% select(pat, bmi = bmi_5, score = score_5) %>% mutate(when="5")
# Ok, this could be combined...
bind_rows(dt_0, dt_5)
#> # A tibble: 6 x 4
#>   pat     bmi score when 
#> * <chr> <dbl> <dbl> <chr>
#> 1 a        25    30 0    
#> 2 b        27    20 0    
#> 3 c        28    21 0    
#> 4 a        28    43 5    
#> 5 b        21    25 5    
#> 6 c        23    21 5

1 Ответ

0 голосов
/ 10 апреля 2020

О, нет, это было почти тривиально:

dt %>% pivot_longer(
  -pat,
  names_to = c(".value", "when"), 
  names_sep = "_"
)

Извините за вопрос, может быть, кто-то использует это.

...