如何重塑我的数据框以与 R 中的 cor() 一起使用?

How can I reshape my data frame to be used with cor() in R?

我不熟悉 R 和数据整理。 我想使用 cor() 函数计算相关矩阵,为此我必须重塑我的数据框。它由一个在线商店的 1500 种不同的文章 (StockCodes) 组成,每篇文章的销售历史为 365 天(每个 StockCode 每个日期的数量)。

我需要以 Dates 成为新行名并且 StockCodes 成为新列名的形式重塑它。

考虑这个简短的例子:

my_df <- data.frame(Stockcode = c("A","A", "B","B", "C", "C"), Quantity = c(1,5,3,2,1,4), Date = c("2010-12-01","2010-12-02","2010-12-01","2010-12-02","2010-12-01","2010-12-02") )

看起来像这样:

  Stockcode Quantity       Date
1         A        1 2010-12-01
2         A        5 2010-12-02
3         B        3 2010-12-01
4         B        2 2010-12-02
5         C        1 2010-12-01
6         C        4 2010-12-02

我希望它被转化为:

df_reshaped <- data.frame(A = c(1,5), B = c(3,2), C = c(1,4), row.names = c("2010-12-01","2010-12-02"))

看起来像这样:

           A B C
2010-12-01 1 3 1
2010-12-02 5 2 4

我用 for 循环实现了这一点(并成功计算了我的相关矩阵),但是循环执行了 "ages"(大约 4 小时)。

有没有合适又快捷的方法?

非常感谢任何帮助!

这是使用 tidyr 中的 pivot_wider 的方法:

my_df %>%
   pivot_wider(names_from = Stockcode, values_from = Quantity) %>% ## pivot columns in wide format
   column_to_rownames(var = "Date") ## convert Date column to row names

#           A B C
#2010-12-01 1 3 1
#2010-12-02 5 2 4