转换为宽格式的 R 函数

R function to cast to wide format

可能是一个相当简单的问题,但是到目前为止我还没有能够解决它。我的目标是在 R 中重新设计具有以下格式的数据框:

var1 year Jan Feb March
x1 2019 1 2 3
x2 2020 2 2 3
x1 2020 1 2 2
x2 2019 3 1 1

宽格式:结果如下 table:

year 2020 2020 2020 2019 2019 2019
Jan Feb March Jan Feb March
x1 1 2 2 1 2 3
x2 2 2 3 3 1 1

非常感谢您的任何建议或帮助!!

这很有用:

library(tidyverse)
#Code
new <- df %>% pivot_wider(names_from = year,values_from=Jan:March)

输出:

# A tibble: 2 x 7
  var1  Jan_2019 Jan_2020 Feb_2019 Feb_2020 March_2019 March_2020
  <chr>    <int>    <int>    <int>    <int>      <int>      <int>
1 x1           1        1        2        2          3          2
2 x2           3        2        1        2          1          3

使用了一些数据:

#Data
df <- structure(list(var1 = c("x1", "x2", "x1", "x2"), year = c(2019L, 
2020L, 2020L, 2019L), Jan = c(1L, 2L, 1L, 3L), Feb = c(2L, 2L, 
2L, 1L), March = c(3L, 3L, 2L, 1L)), class = "data.frame", row.names = c(NA, 
-4L))

data.table 方式为:

library(data.table)
dcast(setDT(df), var1~year, value.var = c('Jan', 'Feb', 'March'))

#   var1 Jan_2019 Jan_2020 Feb_2019 Feb_2020 March_2019 March_2020
#1:   x1        1        1        2        2          3          2
#2:   x2        3        2        1        2          1          3