我有一个包含两个级别数据的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 ... ...
我的数据中有大约20,000个组,其中太多不足以制作好的增长曲线图。如何随机选择约20个我的身份证? (所以:还要选择与该id对应的所有4行年份?)
答案 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