You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R data.table随机抽取2个学生并保留其全部数据?

问题:从data.table中随机抽取指定数量的学生及其全部数据

原始数据表DATA和目标结果表WANT如下:

DATA = data.table(STUDENT = c(1,1,2,2,2,2,2,3,3,3,3,3,4),
SCORE = c(5,6,8,3,14,5,6,9,0,12,13,14,19))

WANT = data.table(STUDENT = c(1,1,4),
SCORE = c(5,6,19))

需求说明:从DATA中随机抽取2个STUDENT,并保留这些学生的所有数据(上述WANT是其中一种可能的结果)。

我尝试了以下代码,但未达到预期效果:

WANT = WANT[ , .SD[sample(x = .N, size = 2)], by = STUDENT]

正确解法

你的代码逻辑有误——它是对每个学生分组后,从每组内随机抽取2行数据,而不是先筛选出2个学生再取他们的全部数据。正确的写法应该是先随机选中2个唯一的学生ID,再从原表中提取这些学生的所有记录:

分步写法:

# 随机抽取2个不重复的学生ID
selected_students <- sample(unique(DATA$STUDENT), size = 2)
# 筛选出这些学生的全部数据
WANT <- DATA[STUDENT %in% selected_students]

链式简洁写法:

WANT <- DATA[STUDENT %in% sample(unique(STUDENT), 2)]

内容的提问来源于stack exchange,提问作者bvowe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:01:02