转置数据框并将列名称添加为 R 中的变量

Jor*_*ong 4 r dplyr data.table tidyverse

我有一个很宽的时间序列数据框,并且以个股数据作为列名称。我想将此数据帧转换为长格式,而不取消查看数据属于哪个股票的能力。

这是下面的数据。

df = structure(list(Date = structure(c(1607922000, 1608008400), class = c("POSIXct", 
"POSIXt"), tzone = ""), AAPL.Close = c(0.32982465, 0.34001608
), MSFT.Close = c(0.26307234, 0.27235893), GS.Close = c(0.30742572, 
0.29825025), QQQ.Close = c(0.25350002, 0.24456267)), row.names = 1:2, class = "data.frame")


  Date        AAPL.Close MSFT.Close GS.Close QQQ.Close
1 2020-12-14  0.3298246  0.2630723 0.3074257 0.2535000
2 2020-12-15  0.3400161  0.2723589 0.2982502 0.2445627
Run Code Online (Sandbox Code Playgroud)

我希望新的数据框看起来像这样。

Date          Data     Ticker
2020-12-14   .3298     AAPL 
2020-12-15   .3400     AAPL
2020-12-14   .260      MSFT
2020-12-15   .27       MSFT
.
.
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助

akr*_*run 5

我们可以使用pivot_longer

library(tidyr)
library(dplyr)
df %>% 
   mutate(Date = as.Date(Date)) %>%
   pivot_longer(cols = -Date, names_to = c("Ticker", ".value"), 
       names_sep = "\\.") %>% 
   rename(Data = Close)

Run Code Online (Sandbox Code Playgroud)