如何使用Pivot_longer将宽型数据重塑为具有多个变量的长型数据

时间:2020-05-03 06:55:15

标签: r tidyverse tidyr reshape2

我想问一下如何将以下数据框从宽型转换为长型。

宽型数据如下。 Wide-type data before reshaping 长型数据,即我想要获取的数据帧,如下所示。 Long-type data after reshaping 非常感谢您能给我一些使用枢轴加长的提示。

我可以通过编写BLS和ELS分别重塑数据:

ID:1 LastRequestStatus:1 ApplicantID:1 ApiRequestDate:2019/02/03
ID:2 LastRequestStatus:2 ApplicantID:1 ApiRequestDate:2019/02/16

ID:3 LastRequestStatus:10 ApplicantID:2 ApiRequestDate:2019/02/01
ID:4 LastRequestStatus:19 ApplicantID:2 ApiRequestDate:2019/02/20
ID:5 LastRequestStatus:31 ApplicantID:2 ApiRequestDate:2019/02/29

但是以这种方式,我需要合并2个单独的文件。 我想知道如何在不制作2个单独文件的情况下重塑数据。

在此先感谢

1 个答案:

答案 0 :(得分:0)

您可以尝试:

tidyr::pivot_longer(df, cols = -ID_IE, 
                    names_to = c('.value', 'grade'), 
                    names_pattern = '(.*)(\\d+)')

# A tibble: 8 x 4
#  ID_IE grade BLS_tchrG ELS_tchrG
#  <dbl> <chr>     <dbl>     <dbl>
#1  2135 2             1         1
#2  2135 7             1         1
#3  2101 2             0         0
#4  2101 7             2         0
#5  2103 2             0         0
#6  2103 7             3         0
#7  2111 2             1         1
#8  2111 7             4         1

数据

尝试使用此数据:

df <- data.frame(ID_IE = c(2135, 2101, 2103, 2111), BLS_tchrG2 = c(1, 0, 0, 1), 
                 BLS_tchrG7 = 1:4,
                 ELS_tchrG2 = c(1, 0, 0, 1), ELS_tchrG7 = c(1, 0, 0, 1))