按组拆分数据的最快方法,在R中移动单个向量

时间:2015-12-10 18:50:41

标签: r split-apply-combine

我熟悉R中的一些split-apply-combine函数,比如ddply,但我不确定如何拆分数据帧,修改每个子集中的单个变量,然后重新组合子集。我可以手动完成,但肯定有更好的方法。

在我的示例中,我试图在组中混合单个变量(但没有其他变量)。这是一个排列分析,所以我做了很多次,因此希望加快速度。

allS <- split(all, f=all$cp)
for(j in 1:length(allS)){
    allS[[j]]$party <- sample(x=allS[[j]]$party)
}
tmpAll <- rbind.fill(allS)

示例数据框:

all <- data.frame(cp=factor(1:5), party=rep(c("A","B","C","D"), 5))

感谢任何方向!

2 个答案:

答案 0 :(得分:3)

我们可以使用data.table。我们转换了&#39; data.frame&#39;到&#39; data.table&#39; (setDT(all)),按&#39; cp&#39;,sample分组&#39;并将(:=)的输出分配给&#39;列。

library(data.table)
setDT(all)[, party:= sample(party) , by = cp]

答案 1 :(得分:1)

dplyr方式。

library(dplyr)
all %>% group_by(cp) %>% mutate(party=sample(party))