如何将时间序列表的结构从行更改为列?

时间:2019-03-27 14:27:41

标签: r dataframe reshape melt

所以我有一个以下格式的表:

date <- c('t1','t1','t1','t2','t2','t2')
factor <- c('a','b','c','a','b','c')
beta <- c(1,2,4,3,5,2)

df <- data.frame(date, factor, beta)
df

 date factor beta
1   t1      a    1
2   t1      b    2
3   t1      c    4
4   t2      a    3
5   t2      b    5
6   t2      c    2

我想通过以下方式重新格式化表中的数据:

date <- c('t1','t2')
factor_a <- c(1,3)
factor_b <- c(2,5)
factor_c <- c(4,9)

df <- data.frame(date, factor_a, factor_b, factor_c)

df
  date factor_a factor_b factor_c
1   t1        1        2        4
2   t2        3        5        9

我尝试使用融合和重塑,但没有成功。

1 个答案:

答案 0 :(得分:2)

我们可以使用spread

library(tidyverse)
df %>% 
   mutate(factor = paste0("factor_", factor)) %>%
   spread(factor, beta)
#    date factor_a factor_b factor_c
#1   t1        1        2        4
#2   t2        3        5        2