r - 通过 R 中数据帧中的记录匹配向量值

标签 r sampling

我有一个值向量 r如下:

 r<-c(1,3,4,6,7)

和一个数据框 df有 20 条记录和两列:
 id<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,1,4,15,16,17,18,19,20)
 freq<-c(1,3,2,4,5,6,6,7,8,3,3,1,6,9,9,1,1,4,3,7,7)
 df<-data.frame(id,freq)

使用 r向量 我需要从 df 中提取记录样本(以新数据框的形式) freq记录的值将等于我在 r 中的值向量。不用说,如果它发现多条记录具有相同的freq值它应该随机选择其中之一。例如,一种可能的结果是:
   id     frequency
   12         1
   10         3
   4          4
   7          6
   8          7

如果有人能帮助我解决这个问题,我将不胜感激。

最佳答案

你可以试试 data.table

library(data.table)
setDT(df)[freq %in% r,sample(id,1L) , freq]

或使用 base R
aggregate(id~freq, df, subset=freq %in% r, FUN= sample, 1L)

更新

如果您有一个带有重复值的向量“r”,并且想要根据 'r' 中唯一元素的长度对数据集 ('df') 进行采样
  r <-c(1,3,3,4,6,7)
  res <- do.call(rbind,lapply(split(r, r), function(x) {
           x1 <- df[df$freq %in% x,]
           x1[sample(1:nrow(x1),length(x), replace=FALSE),]}))
  row.names(res) <- NULL

关于r - 通过 R 中数据帧中的记录匹配向量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29988601/

相关文章:

R [ggplot2] 如何设置刻度大小?

r - ggplot : Log scale with linear labels

python - 创建返回集合的随机哈希函数

python-2.7 - 如何使用 python scikit-learn 执行欠采样(正确的方式)?

java - 从大型数组中采样数据

html - Shiny 的可折叠复选框组输入

r - 在不了解 latex 的情况下在 R 中使用 stargazer

r - Apriori 生成的编写规则

python - matplotlib argrelmax 找不到所有最大值

r - 从 R 中正态分布的特定部分采样