如何将数据帧中的n列转换为R中的两列?

如何将数据帧中的n列转换为R中的两列?,r,dataframe,R,Dataframe,我有以下数据帧: df = structure(list(Date...1 = structure(c(1577836800, 1577923200, 1578009600, 1578268800, 1578355200, 1578441600), class = c("POSIXct", "POSIXt"), tzone = "UTC"), FCGDP2021.2020 = c(1.2, 1.2, 1.2, 1.2, 1.2,

我有以下数据帧:

df = structure(list(Date...1 = structure(c(1577836800, 1577923200, 
1578009600, 1578268800, 1578355200, 1578441600), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), FCGDP2021.2020 = c(1.2, 1.2, 1.2, 
1.2, 1.2, 1.2), Date...3 = structure(c(1546300800, 1546387200, 
1546473600, 1546560000, 1546819200, 1546905600), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), FCGDP2020.2019 = c(1.5, 1.5, 1.5, 
1.5, 1.5, 1.5), Date...5 = structure(c(1514764800, 1514851200, 
1514937600, 1515024000, 1515110400, 1515369600), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), FCGDP2019.2018 = c(1.8, 1.8, 1.8, 
1.8, 1.8, 1.8)), row.names = c(NA, 6L), class = "data.frame")


   Date...1 FCGDP2021.2020   Date...3 FCGDP2020.2019
1 2020-01-01            1.2 2019-01-01            1.5
2 2020-01-02            1.2 2019-01-02            1.5
3 2020-01-03            1.2 2019-01-03            1.5
4 2020-01-06            1.2 2019-01-04            1.5
5 2020-01-07            1.2 2019-01-07            1.5
6 2020-01-08            1.2 2019-01-08            1.5
    Date...5 FCGDP2019.2018 
1 2018-01-01            1.8      
2 2018-01-02            1.8      
3 2018-01-03            1.8      
4 2018-01-04            1.8      
5 2018-01-05            1.8      
6 2018-01-08            1.8      

我想得到的是:

    Date         Data   
1 2020-01-01     1.2            
2 2020-01-02     1.2             
3 2020-01-03     1.2             
4 2020-01-06     1.2             
5 2020-01-07     1.2            
6 2020-01-08     1.2             
7 2019-01-01     1.5
8 2019-01-02     1.5
9 2019-01-03     1.5
10 2019-01-04    1.5
11 2019-01-07    1.5
12 2019-01-08    1.5
13 2018-01-01    1.8        
14 2018-01-02    1.8      
15 2018-01-03    1.8      
16 2018-01-04    1.8      
17 2018-01-05    1.8      
18 2018-01-08    1.8      

按行将以“Date”和“FC”开头的列合并为两个单独的列。我尝试过,但没有成功,
melt
pivot\u更长的时间

有人能帮我吗


谢谢

使用
pivot\u longer
您可以尝试:

tidyr::pivot_longer(df, 
                    cols = everything(), 
                    names_to = '.value', 
                    names_pattern = '(Date|FCGDP)')

# A tibble: 18 x 2
#   Date                FCGDP
#   <dttm>              <dbl>
# 1 2020-01-01 00:00:00   1.2
# 2 2019-01-01 00:00:00   1.5
# 3 2018-01-01 00:00:00   1.8
# 4 2020-01-02 00:00:00   1.2
# 5 2019-01-02 00:00:00   1.5
# 6 2018-01-02 00:00:00   1.8
# 7 2020-01-03 00:00:00   1.2
# 8 2019-01-03 00:00:00   1.5
# 9 2018-01-03 00:00:00   1.8
#10 2020-01-06 00:00:00   1.2
#11 2019-01-04 00:00:00   1.5
#12 2018-01-04 00:00:00   1.8
#13 2020-01-07 00:00:00   1.2
#14 2019-01-07 00:00:00   1.5
#15 2018-01-05 00:00:00   1.8
#16 2020-01-08 00:00:00   1.2
#17 2019-01-08 00:00:00   1.5
#18 2018-01-08 00:00:00   1.8

一如既往的令人印象深刻!非常感谢!
data.frame(Date = do.call(c, df[c(TRUE, FALSE)]), 
           Data = unlist(df[c(FALSE, TRUE)]), row.names = NULL)