且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用tidyr实现相当于rbind的功能

更新时间:2021-07-18 04:43:02

我们可以使用pivot_longer,其中names_sep指定为_names_to指定为".value"和分组名称

library(dplyr)
library(tidyr)
df %>% 
    pivot_longer(cols = starts_with('var'), 
       names_to = c('grp', '.value'), names_sep="_")
#   group   day grp    mean    sd
#   <chr> <int> <chr> <dbl> <dbl>
# 1 a         1 var1  -0.63  5.49
# 2 a         1 var2  -0.62  5.82
# 3 a         2 var1   0.18  5.74
# 4 a         2 var2  -2.21  5.59
# 5 a         3 var1  -0.84  5.58
# 6 a         3 var2   1.12  5.92
# 7 b         1 var1   1.6   4.69
# 8 b         1 var2  -0.04  5.78
# 9 b         2 var1   0.33  6.51
#10 b         2 var2  -0.02  5.07
#11 b         3 var1  -0.82  5.39
#12 b         3 var2   0.94  3.01

我们可以稍后删除"GRP"列

df %>% 
    pivot_longer(cols = starts_with('var'), 
       names_to = c('grp', '.value'), names_sep="_") %>%
    select(-grp)