2

と の 2 つのレベルのデータを持つ 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 をランダムに選択するにはどうすればよいですか? (つまり、その ID に対応する 4 行の年もすべて選択しますか?)

4

2 に答える 2

5

sample使用してから indexを使用すると、これは非常に簡単です。これは、あなたが提示したものに似た構成例です。これは実際には 2 行のコードであり、必要に応じて 1 行で実行できます。

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が要因であると仮定しています(そうでない場合はunique代わりに使用してくださいlevels

于 2012-11-04T00:30:45.190 に答える