【发布时间】:2014-06-28 14:57:00
【问题描述】:
假设我有一个数据框 myD,其中包含以下列:x、y、a、b。
我想选择 x 和 y 的唯一组合。这部分很简单,只需在前两列使用 unique 即可。但是,对于 x,y 的每个唯一组合,都有 a 和 b 的多个值;我想选择一个随机行。即,在与 x,y 的特定组合匹配的所有行中,我只想随机选择其中一行。请注意,我不想独立地对 a 和 b 进行采样;它们应该来自同一行。
我正在使用 ddply 来执行此操作:
ddply(myD, c("x","y"), summarize,
a=a[1],
b=b[1])
这当然会得到每个 x,y 组合的第一对 a,b;我随机排列整个数据框以实现一致性。
无论如何,当数据帧有一百万行或更多行时,这个 ddply 命令非常慢。有没有更快的方法来做到这一点?
【问题讨论】:
-
你试过
ddply(myD, .(x, y), ...)吗?数据框的列类有哪些?