这是非常基本的,但我在网上找不到答案.我使用R并有一个类似以下的数据集(但要大得多):

set.seed(123)
id<-c(1,1,1,2,2,3,3,3,3,3,4,5,5,6,6,6)
week<-c(1,2,3,1,2,1,2,3,4,5,1,1,2,1,2,3)
value<-rnorm(16, mean=5, sd=1)
mydf<-data.frame(id, week, value)

ID指的是特定的人,所以一些人比其他人有更多的观察.我想从数据帧中抽取individuals个样本,这样对于每个被采样的个体,该个体的所有行都将包含在该样本中.如果我这么做了

mydf[sample(nrow(mydf),3),]

很明显,我只是随机得到三行,当我想得到,例如,

 id  week  value
  1    1  4.439524
  1    2  4.769823
  1    3  6.558708
  4    1  6.224082
  6    1  5.110683
  6    2  4.444159
  6    3  6.786913

如何对具有此约束的行进行抽样?提前谢谢您!

推荐答案

其中一个选项是:

# set seed for reproducibility
set.seed(958) 

# Sample size
n <- 3
# Take simple random sample from the ids present
sampled_ids <- sample(unique(mydf$id), n)

# Keep only rows of the sampled IDs
mydf[mydf$id %in% sampled_ids, ]

#    id week    value
# 4   2    1 5.070508
# 5   2    2 5.129288
# 12  5    1 5.359814
# 13  5    2 5.400771
# 14  6    1 5.110683
# 15  6    2 4.444159
# 16  6    3 6.786913

R相关问答推荐

ggplot 2中的地块底图(basemaps_gglayer()不起作用)

保存包含循环和ifelse的函数的输出

获取列中值更改的行号

R for循环返回到先前值

如何编辑gMarginal背景以匹配绘图背景?

我如何才能找到FAMILY=POISSON(LINK=&Q;LOG&Q;)中的模型预测指定值的日期?

用关联字符串替换列名的元素

使用data.table::fcase()而不是dplyr::case_When()时保持值

给定开始日期和月份(数字),如何根据R中的开始日期和月数创建日期列

如何在ggplot2中绘制具有特定 colored颜色 的连续色轮

以字符格式导入的ExcelElectron 表格日期列标题

如何将一个方阵分解成没有循环的立方体

使用R将简单的JSON解析为嵌套框架

将具有坐标列表列的三角形转换为多个多边形

ggplot R:X,Y,Z使用固定/等距的X,Y坐标绘制六边形热图

数值型数据与字符混合时如何进行绑定

R中治疗序列的相对时间指数

如何创建一个由一个连续变量和一个因素变量组成的复杂方框图?

为什么R列名称忽略具有指定名称的向量,而只关注索引?

如何在基数R中根据矩阵散点图中的因子给数据上色?