首页 > 解决方案 > 展开数据框列

问题描述

假设我有以下形式的 data.frame 或 data.table:

df <- data.frame("date"=c("2012-11-07", "2012-11-07", "2012-11-08", "2012-11-08", "2012-11-06", "2012-11-06"),
                 "id"=c(1,2, 1, 2, 2, 1),
                 "val"=c(100, 101, 102, 103, 104, 105))

我喜欢扩展它,以便每个id都有自己的列,其中包含val给定的列date,即它应该采用形式

df.new <- data.frame("date"=c("2012-11-06", "2012-11-07", "2012-11-08"),
                     "1"=c(105, 100, 102),
                     "2"=c(104, 101, 103))

是否存在可以执行此操作的 data.frames 或 data.tables 方法?

标签: rdataframedata.table

解决方案


这是否有效:

library(dplyr)
library(tidyr)
df %>% pivot_wider(names_from = id, values_from = val, names_prefix = 'X')
# A tibble: 3 x 3
  date          X1    X2
  <chr>      <dbl> <dbl>
1 2012-11-07   100   101
2 2012-11-08   102   103
3 2012-11-06   105   104

推荐阅读