在R中随机选择组(以及每组的所有情况)?

use*_*218 2 r sample

我有一个带有两级数据的R数据帧:idyear.在由定义的组内id,年份增加(整个数据集每组具有相同(数量)年,如下所示:

id    year    var1    var2
11A   2001    ...     ...
11A   2002    ...     ...
11A   2003    ...     ...
11A   2004    ...     ...
13B   2001    ...     ...
13B   2002    ...     ...
13B   2003    ...     ...
13B   2004    ...     ...
22Z   2001    ...     ...
Run Code Online (Sandbox Code Playgroud)

在我的数据中,我有大约20,000个组,这些组的数量太多,无法制作出很好的增长曲线图.如何随机选择约20个我的身份证?(所以:还要选择与该id对应的所有4行年份?)

Tyl*_*ker 5

如果你使用sample然后索引,这是非常简单的.这是一个与你所呈现的相似的组合示例.它实际上只有两行代码,如果你愿意,可以在一行中完成.

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, ]
Run Code Online (Sandbox Code Playgroud)