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)
我正在尝试用行值重命名数据框的列。我有以下内容:
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)