3

我熟悉 R 中的一些拆分-应用-组合函数,例如 ddply,但我不确定如何拆分数据框、修改每个子集中的单个变量,然后重新组合子集。我可以手动执行此操作,但肯定有更好的方法。

在我的示例中,我试图在 group中随机播放单个变量(但没有其他变量) 。这是一个排列分析,所以我做了很多次,因此想加快速度。

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))

感谢您的任何指导!

4

2 回答 2

4

我们可以使用data.table. 我们将“data.frame”转换为“data.table”(setDT(all)),按“cp”分组,sample“party”并将输出分配(:=)回“party”列。

library(data.table)
setDT(all)[, party:= sample(party) , by = cp]
于 2015-12-10T18:53:39.603 回答
2

dplyr方式。

library(dplyr)
all %>% group_by(cp) %>% mutate(party=sample(party))
于 2015-12-11T06:52:57.463 回答