r - 按 ID 选择随机样本

标签 r dataframe split sample

我有一个包含 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/

相关文章:

c# - 读取文本文件并写入列表

R-如何有条件地删除group_by的第一行

r - 将参数传递给 R Markdown

python - 在 Pandas DataFrame 中使用 .at 设置值,出现无法理解的类型错误

python - 如何向 pandas 数据透视表添加新索引?

arrays - 在 Powershell 中内联创建和拆分数组两次

R从年份、原点和分钟构造日期时间

r - 分组条形图中的ggplot标签定位

pandas - 为什么数据框中的列名称旁边有符号?

字符前的字符串拆分