【问题标题】:Better solution for partial pivot_longer部分 pivot_longer 的更好解决方案
【发布时间】:2020-04-10 10:47:07
【问题描述】:

我正在寻找类似于部分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

【问题讨论】:

标签: r dplyr pivot tidyr


【解决方案1】:

哦,不,这几乎是微不足道的:

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

不好意思问了,也许有人有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2011-11-21
    • 1970-01-01
    相关资源
    最近更新 更多