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

时间:2012-11-04 00:05:49

标签: 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    ...     ...

我的数据中有大约20,000个组,其中太多不足以制作好的增长曲线图。如何随机选择约20个我的身份证? (所以:还要选择与该id对应的所有4行年份?)

2 个答案:

答案 0 :(得分: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, ]

答案 1 :(得分:0)

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

假设您的数据框名为df且您的id是一个因素(如果不是,则使用unique代替levels