我一直在努力解决这个问题,并且看不到任何权宜之计。
我有一个数据集,我试图在另一个变量(一个位置)中置换一个变量(一个属性),而不管一个对象(一个项目)。
以下是数据摘录:
ID_FIELD SPCD Total
1177 833 428.286591
11383 691 1175.846712
24081 316 137.042979
11383 318 177.335481
1177 71 166.629921
24081 110 1170.012216
1177 12 8.379811
30284 541 585.039300
24081 746 188.808428
24081 531 196.142482
1177 111 47.258113
1177 12 198.443376
11383 827 16.095224
使用ddply()
包中的plyr
函数,使用R版本3.2.0,我已提交以下代码:
ddply(data,.(Total,ID_FIELD),sample)
在这里,我尝试在Total
(该位置)内的SPCD
(项目)上以及在运行ID_FIELD
代码两次之后置换ddply()
(属性)顺序,结果与以前完全相同,这不是我想要的。我希望这个过程在每次运行函数时都是随机的(即Total
每次提交ddply()
的新的随机播放)。
有关如何完成此任务的任何线索?考虑到应用程序具有大型数据集,也可以理解快速的过程。我在我的智慧结束。
非常感谢。
答案 0 :(得分:2)
使用plyr:
ddply(data, .(ID_FIELD), function(df) df[sample(nrow(df)),])
使用dplyr,它提供了一个采样函数:
library(dplyr)
data %>% group_by(ID_FIELD) %>% sample_frac