使用plyr将长数据框架重塑为一个宽大的结构?

时间:2013-08-04 21:21:17

标签: r dataframe plyr

> A <- data.frame(x = c(1,1,2,2), y = c(1,2,1,2), v = c(0.1,0.2,0.3,0.4))
> A
  x y   v
1 1 1 0.1
2 1 2 0.2
3 2 1 0.3
4 2 2 0.4

> B <- dcast(A, x~y)
Using v as value column: use value.var to override.
> B
  x   1   2
1 1 0.1 0.2
2 2 0.3 0.4

是否可以使用plyr 将A重塑为B ,如果是,将如何进行?

1 个答案:

答案 0 :(得分:3)

是的,例如你可以这样做:

library(plyr)
ddply(A,.(x),function(t)setNames(t$v,t$y))
  x   1   2
1 1 0.1 0.2
2 2 0.3 0.4

编辑添加关于ddply使用的一些解释(更好地阅读文档并在SO或网络中查看许多示例):

一般语法如下:

ddply(data.frame, variable(s), function, optional arguments)
  • data.frame = A
  • variable = .(x):我使用.。这是一个plyr功能。这个功能是 用于捕获变量的名称,而不是它们的当前值。
  • function =匿名函数function(t){....}。一个班轮功能不需要{

ddply内,我通常做的是以下内容:

ddply(mydf, .(var), function(t) browser() )

然后我实时检查...