【发布时间】:2016-07-04 12:39:08
【问题描述】:
给定一个数据集
key <- rep(c('a', 'b', 'c'), 10)
value <- sample(30)
df <- data.frame(key, value)
我想在键中为每个组提供不同数量的样本,使用 dplyr 的简单代码显然不适用于此任务
ns <- c('a'= 1, 'b'= 2, 'c' = 3)
df %>%
mutate(n_s = ns[key]) %>%
group_by(key) %>%
sample_n(n_s)
有一些解决方案看起来就这么简单吗?
【问题讨论】:
-
一个有趣的 data.table 版本 -
df[df[, sample(.I, ns[match(unlist(.BY), names(ns))]), by=key]$V1,]