2

我有一个包含两个数据级别的 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?(所以:还选择与该 ID 对应的所有 4 行年份?)

4

2 回答 2

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, ]
于 2012-11-04T00:29:16.577 回答
2
subset(df, id %in% sample(levels(df$id), 20))

这是假设您的数据框被调用df并且您id是一个因素(如果不是,则使用uniquelevels不是)

于 2012-11-04T00:30:45.190 回答