R:如何使用自定义频率对行进行采样

R: how to sample rows with custom frequencies

我在 R 中有一个数据框,它有两列,一列是姓氏,另一列是每个姓氏出现的频率。我想根据频率值 (0 -> 1) 随机 select 姓氏。

到目前为止,我已经尝试使用样本函数,但它不允许每个值的特定频率。不确定这是否可能:/

df1 <- data.frame(names = c("John","Mary"),freq=c(0.2,0.8))
df1
#   names freq
# 1  John  0.2
# 2  Mary  0.8

set.seed(1)
sample100 <- sample(
  x = df1$names,
  size = 100,
  replace=TRUE,
  prob=df1$freq)

table(sample100)
# sample100
# John Mary 
#   17   83