我有一个包含 811777 行和 133 个不同工作 ID 的数据框。我的数据框如下所示:
PERS_ID NEU_DATUM
1 22 2022-03-01 00:00:00
2 22 2022-03-01 00:00:00
3 22 2022-03-01 00:00:00
4 22 2022-03-01 00:00:00
5 22 2022-03-01 00:00:00
6 22 2022-03-01 00:00:00
7 22 2022-03-01 00:00:00
8 22 2022-03-01 00:00:00
9 22 2022-03-01 00:00:00
10 22 2022-03-01 00:00:00
在前 10 行中,您只能看到一个 ID 为“22”的工作人员,但正如我上面所说,我的 df 有 133 个不同的工作人员 ID。我想随机抽取 50 个工作 ID 并创建一个新的 df。但我不想一个 ID 占一行。相反,我想要具有该工作 ID 的每一行。所以基本上我的新 df 应由 50 个随机工作人员 ID 组成,并且我想要这些工作人员的每一行。我已经尝试过示例代码,但失败了:(。提前致谢!
最佳答案
如果您的数据是df
,您可以执行以下操作:
df[df$PERS_ID %in% sample(unique(df$PERS_ID), 50),]
或使用 data.table
library(data.table)
setDT(df)[PERS_ID %in% sample(unique(PERS_ID),50)]
或使用 dplyr:
library(dplyr)
df %>% filter(PERS_ID %in% sample(unique(PERS_ID),50))
您还可以使用连接方法来做到这一点;一种使用 dplyr
的方法如下所示:
inner_join(
df,
df %>% distinct(PERS_ID) %>% slice_sample(n=50)
)
关于r - 按 ID 选择随机样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73445452/