首页 > 解决方案 > pivot_longer 但对于多组列

问题描述

我有一个数据框如下:

Z1      Z2      Y1      Y2      smpl
0.451   0.333   0.034   0.173   A        
0.491   0.270   0.033   0.207   B

Z1 和 Z2 列是来自同一样本的多个观测值。Y1 和 Y2 也是如此。

我需要合并列 Z1 和 Z2,以及列 Y1 和 Y2。产生以下内容:

Z       Y       smpl
0.451   0.034   A
0.333   0.173   A
0.491   0.033   B   
0.270   0.207   B

我确信解决方案是微不足道的,但是......好吧,我有点n00b,因此我也被卡住了。我怎样才能做到这一点?

标签: r

解决方案


您可以使用 :

tidyr::pivot_longer(df, cols = -smpl, 
                        names_to = '.value', 
                        names_pattern = '([A-Z])')
# A tibble: 4 x 3
#  smpl    Z     Y
#  <chr> <dbl> <dbl>
#1 A     0.451 0.034
#2 A     0.333 0.173
#3 B     0.491 0.033
#4 B     0.27  0.207

推荐阅读