首页 > 解决方案 > R从数据框列创建数据框的方法

问题描述

在 R 中寻找一种从另一个数据帧创建数据帧的方法,其中 Col A 的值充当索引,并且 Col B 中的每个唯一值成为新数据帧中的新列,其中 Col C 的值是值在新列中。

数据框1:

可乐 B栏 科尔C
一个 2011 1
2012 2
C 2013 3
D 2011 4
2012 5
D 2013 6
一个 2013 7

结果:

可乐 2011 2012 2013
一个 1 0 7
0 2 0
C 0 0 3
D 4 0 6
0 0 5

标签: rdataframereshape

解决方案


这是使用的基本 R 选项reshape

reshape(
  df,
  direction = "wide",
  idvar = "ColA",
  timevar = "ColB"
)

这使

  ColA ColC.2011 ColC.2012 ColC.2013
1    A         1        NA         7
2    B        NA         2        NA
3    C        NA        NA         3
4    D         4        NA         6
5    E        NA         5        NA

一个data.table选项dcast

> dcast(setDT(df),ColA~ColB, value.var = "ColC")
   ColA 2011 2012 2013
1:    A    1   NA    7
2:    B   NA    2   NA
3:    C   NA   NA    3
4:    D    4   NA    6
5:    E   NA    5   NA

数据

> dput(df)
structure(list(ColA = c("A", "B", "C", "D", "E", "D", "A"), ColB = c(2011L, 
2012L, 2013L, 2011L, 2012L, 2013L, 2013L), ColC = 1:7), class = "data.frame", row.names = c(NA, 
-7L))

推荐阅读