【发布时间】:2020-09-12 15:16:41
【问题描述】:
set.seed(1)
data=data.frame(SCHOOL = rep(1:10, each = 1000), GRADE = sample(7:12, r = T, size = 10000),SCORE = sample(1:100, r = T, size = 10000))
我有包含学生考试成绩信息的“数据”。我希望:计算每个 SCHOOL 有多少 GRADE,然后对所有 SCHOOLS 取 GRADE 的最小值。像这样:
对于每个 SCHOOL,计算特定 GRADE 的行数。 然后为每个 GRADE 找出所有 SCHOOL 中的最小值。 最后,我希望根据步骤 2 中找到的最小值随机抽样。
所以基本上在这个基本示例中,有两个学校和 7 年级和 8 年级:
SCHOOL 1 7 年级有 2 个 SCORE,SCHOOL 1 8 年级有 3 个 SCORE。
SCHOOL 2 7 年级有 1 个 SCORE,SCHOOL 2 8 年级有 4 个 SCORE。
因此,新数据包含 1 年级和 2 年级的 7 年级分数,以及 1 和 2 年级的 8 年级分数,这些分数是随机抽样的。
像这样:
我的尝试: data[, .SD[sample(x = .N, size = min(sum(GRADE), .N))], by = .(SCHOOL,GRADE]
【问题讨论】:
-
@akrun 你有什么建议和想法吗?
-
@Valentin 你有什么建议和想法吗?
标签: r data.table sample