-1
> 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 ,如果可以,将如何完成?

4

1 回答 1

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)
  • 数据帧 = A
  • 变量 = .(x):我使用.. 这是一个 plyr 函数。此函数用于捕获变量的名称,而不是它们的当前值。
  • 函数 = 匿名函数在这里function(t){....}。一个衬里功能不需要{.

ddply,我通常做的是以下几点:

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

然后我实时检查 t ...

于 2013-08-04T21:31:44.773 回答