R - 为列值的随机样本选择行?

标签 r sample subset

如何为列值的随机样本选择所有行?

我有一个看起来像这样的数据框:

tag  weight

R007     10
R007     11
R007      9
J102     11
J102      9
J102     13
J102     10
M942      3
M054      9
M054     12  
V671     12
V671     13
V671      9
V671     12
Z990     10
Z990     11

您可以使用...
weights_df <- structure(list(tag = structure(c(4L, 4L, 4L, 1L, 1L, 1L, 1L, 
3L, 2L, 2L, 5L, 5L, 5L, 5L, 6L, 6L), .Label = c("J102", "M054", 
"M942", "R007", "V671", "Z990"), class = "factor"), value = c(10L, 
11L, 9L, 11L, 9L, 13L, 10L, 3L, 9L, 12L, 12L, 14L, 5L, 12L, 11L, 
15L)), .Names = c("tag", "value"), class = "data.frame", row.names = c(NA, 
-16L))

我需要为两个随机采样的标签创建一个包含上述数据帧中所有行的数据帧。假设标签 R007 和 M942 被随机选择,我的新数据框需要如下所示:
tag  weight

R007     10
R007     11
R007      9
M942      3

我该怎么做呢?

我知道我可以创建一个包含两个随机标签的列表,如下所示:
library(plyr)
tags <- ddply(weights_df, .(tag), summarise, count = length(tag))
set.seed(5464)
tag_sample <- tags[sample(nrow(tags),2),]
tag_sample

导致...
   tag count
4 R007     3
3 M942     1

但我只是不知道如何使用它来对我的原始数据帧进行子集化。

最佳答案

这是你想要的吗?

subset(weights_df, tag%in%sample(levels(tag),2))

关于R - 为列值的随机样本选择行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5943751/

相关文章:

testing - 我们能否通过检查其子集得出一个集合可能不是随机的结论?

SQL通过连续递增序列拆分数据,然后按模式对每个数据进行子集化

r - 如何将 RStudio 主题仅应用于源和控制台背景而不应用于整个 GUI?

r - 是否有将 AOV 事后测试结果添加到 ggplot2 boxplot 的功能?

python - 使用样本权重训练 xgboost (0.7) 分类器

audio - 使用 FFmpeg 将音频文件拆分为等长的片段

r - 在 R 中,如何删除值全为 FALSE 的列?

r - 按频率排序唯一值

r - 为什么 deparse(substitute(x)) 不选择 'x' 的名称

r - 如何在 Logit 回归的调查数据上使用 GAM (mgcv) 中的样本权重?