R:如何使用行值数据框重命名列

R: How to rename columns with row value dataframe

我正在尝试用行值重命名数据框的列。我有以下内容:

                FIRM TIME          V_Ri
1   A EAGLE 14DEC1994  740 -0.0005039933
2   A EAGLE 14DEC1994  741  0.0000000000
3   A EAGLE 14DEC1994  742  0.0238607800
4   A EAGLE 14DEC1994  743 -0.0125612300
5   A EAGLE 14DEC1994  744 -0.0134325100

我想获得:

                 FIRM            740          741    etc.
1   A EAGLE 14DEC1994  -0.0005039933 0.0000000000

我尝试过转置,但没有达到想要的效果。有什么提示吗?

这是 tidyr 包中 pivot_wider() 的问题。

如果您的数据位于名为 df 的 data.frame 中,请执行以下操作:

library(tidyr)

df %>%
  pivot_wider(names_from = "TIME", values_from = "V_Ri")

# A tibble: 1 x 6
  FIRM                  `740` `741`  `742`   `743`   `744`
  <chr>                 <dbl> <dbl>  <dbl>   <dbl>   <dbl>
1 A EAGLE 14DEC1994 -0.000504     0 0.0239 -0.0126 -0.0134

请注意,列名在数字周围有反引号。对象名称(包括列名称)通常不允许以数字开头。反引号封装了非标准名称。

使用的示例数据:

df <- structure(list(FIRM = c("A EAGLE 14DEC1994", "A EAGLE 14DEC1994", 
                              "A EAGLE 14DEC1994", "A EAGLE 14DEC1994", 
                              "A EAGLE 14DEC1994"), 
                     TIME = c(740, 741, 742, 743, 744), 
                     V_Ri = c(-0.0005039933, 0, 0.02386078, -0.01256123, 
                              -0.01343251)), 
                row.names = c(NA, -5L), 
                class = c("tbl_df", "tbl", "data.frame"))

Base R 单线(感谢@Ben Norris 提供的数据集):

spread_df <- as.data.frame.matrix(xtabs(V_Ri ~ FIRM+TIME, df))

如果要重置索引列并将 row.names 推回 FIRM 向量:

data.frame(FIRM = row.names(spread_df), spread_df, row.names = NULL)