基于组随机抽取样本 [英] Take randomly sample based on groups
本文介绍了基于组随机抽取样本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个由分布在 15 个不同 ID 中的近 50,000 行组成的数据框(每个 ID 都有数千个观察值).数据框看起来像:
I have a data frame made by almost 50,000 rows spread in 15 different IDs (every ID has thousands of observations). Data frame looks like:
ID Year Temp ph
1 P1 1996 11.3 6.80
2 P1 1996 9.7 6.90
3 P1 1997 9.8 7.10
...
2000 P2 1997 10.5 6.90
2001 P2 1997 9.9 7.00
2002 P2 1997 10.0 6.93
我想为每个 ID 随机抽取 500 行(所以 P1 为 500,P2 为 500,...)并创建一个新的 df.我试试:
I want to take 500 random rows for every ID (so 500 for P1, 500 for P2,....) and create a new df. I try:
new_df<-df[df$ID %in% sample(unique(dfID),500),]
但是它随机需要一个 ID,而我每个 ID 需要 500 个随机行.
But it takes randomly one ID, while I need 500 random rows for every ID.
推荐答案
试试这个:
library(plyr)
ddply(df,.(ID),function(x) x[sample(nrow(x),500),])
这篇关于基于组随机抽取样本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文