用R将数据帧制成表格

用R将数据帧制成表格,r,data-manipulation,R,Data Manipulation,我想将数据制成表格,使一个因子变量成为列,并在单元格中保留另一个变量的值 所以我试着 a=rep(1:3,3) d<-rep(1:3, each=3) b=rnorm(9) c=runif(9) dt<-data.frame(a,d,b,c) a d b c 1 1 1 0.3819762 0.5199602 2 2 1 0.3896063 0.9144730 3 3 1 2.4356972 0.2888464 4 1 2 1.2697

我想将数据制成表格,使一个因子变量成为列,并在单元格中保留另一个变量的值

所以我试着

a=rep(1:3,3)
d<-rep(1:3, each=3)
b=rnorm(9)
c=runif(9)
dt<-data.frame(a,d,b,c)

  a d          b         c
1 1 1  0.3819762 0.5199602
2 2 1  0.3896063 0.9144730
3 3 1  2.4356972 0.2888464
4 1 2  1.2697016 0.9831191
5 2 2 -1.9844689 0.2046947
6 3 2  0.3473766 0.4766178
7 1 3 -1.5461235 0.6187189
8 2 3  1.0829027 0.9089551
9 3 3 -0.1305324 0.6326141
。。。大数据需要永远的时间


有更好的选择吗?

这里有一个
数据表
选项:

library(data.table)
dt = data.table(dt)

dt[, as.list(b), by = a]

这里有一个
数据表
选项:

library(data.table)
dt = data.table(dt)

dt[, as.list(b), by = a]

这也可以在base R中完成:

reshape(dt,timevar="d",idvar="a",drop="c",direction="wide")
对于您的数据,这将提供

  a       b.1        b.2        b.3
1 1 0.3819762  1.2697016 -1.5461235
2 2 0.3896063 -1.9844689  1.0829027
3 3 2.4356972  0.3473766 -0.1305324
在绘制模拟数据之前,请使用
set.seed
,以便于复制


我不知道这个解决方案会不会很快。此外,要在将来使用它,您必须习惯这些令人困惑的参数名称(“timevar”、“idvar”等),它们可能无法描述您大部分时间实际上在做什么…

这也可以在base R中完成:

reshape(dt,timevar="d",idvar="a",drop="c",direction="wide")
对于您的数据,这将提供

  a       b.1        b.2        b.3
1 1 0.3819762  1.2697016 -1.5461235
2 2 0.3896063 -1.9844689  1.0829027
3 3 2.4356972  0.3473766 -0.1305324
在绘制模拟数据之前,请使用
set.seed
,以便于复制

我不知道这个解决方案会不会很快。此外,要在将来使用它,您必须习惯这些令人困惑的参数名称(“timevar”、“idvar”等),它们可能无法描述您在大多数情况下实际在做什么…

使用Reforme2

> library(reshape2)
> dcast(dt, a ~ d, value.var = "b")
  a         1          2          3
1 1 0.3819762  1.2697016 -1.5461235
2 2 0.3896063 -1.9844689  1.0829027
3 3 2.4356972  0.3473766 -0.1305324
使用重塑2

> library(reshape2)
> dcast(dt, a ~ d, value.var = "b")
  a         1          2          3
1 1 0.3819762  1.2697016 -1.5461235
2 2 0.3896063 -1.9844689  1.0829027
3 3 2.4356972  0.3473766 -0.1305324

谢谢,是的。我知道即使使用这些包,我也无法找出那些参数名称。谢谢,是的。我知道即使使用这些包,我也无法找出那些参数名称。