在R中随机选择组(以及每组所有病例)?

在R中随机选择组(以及每组所有病例)?,r,sample,R,Sample,我有一个R数据框,它有两个级别的数据:id和year。在由id定义的组中,年数增加(整个数据集每个组的年数相同,如下所示: id year var1 var2 11A 2001 ... ... 11A 2002 ... ... 11A 2003 ... ... 11A 2004 ... ... 13B 2001 ... ... 13B 2002 ... ... 13B

我有一个R数据框,它有两个级别的数据:
id
year
。在由
id
定义的组中,年数增加(整个数据集每个组的年数相同,如下所示:

id    year    var1    var2
11A   2001    ...     ...
11A   2002    ...     ...
11A   2003    ...     ...
11A   2004    ...     ...
13B   2001    ...     ...
13B   2002    ...     ...
13B   2003    ...     ...
13B   2004    ...     ...
22Z   2001    ...     ...

我的数据中有大约20000组,当然太多了,无法绘制出好的增长曲线图。我如何随机选择大约20个id?(那么:也选择与该id对应的所有4行年份?)

如果您使用
示例,然后使用索引,这是非常简单的。下面是一个虚构的示例,看起来与您所展示的类似。它实际上只有两行代码,如果您愿意,可以在一行代码中完成

dat <- data.frame(id=paste0(LETTERS[1:8], rep(1:1250, 8)), 
   year=as.factor(as.character(sample(c(1990:2012, 20000, T)))), 
   var1=rnorm(20000), var2=rnorm(20000))

#a look at the data
head(dat)

#sample 20 id's randomly
(ids <- sample(unique(dat$id), 20))

#narrow your data set
dat2 <- dat[dat$id %in% ids, ]
dat
这是假设您的数据帧被称为
df
,并且您的
id
是一个因素(如果不是,则使用
unique
而不是
levels

subset(df, id %in% sample(levels(df$id), 20))