2016-11-26 123 views
-2

如何根據條件值獲得隨機樣本。比如我有以下數據框:R條件隨機樣本

GROUP CLASS AGE 
A  1  10 
A  2  15 
B  1  10 
B  2  17 
C  1  12 
C  2  14 

我需要得到30個記錄樣本的每個組,但只能從CLASS = 1所有樣本dateframe編譯。

我知道怎麼去的30所記錄的樣本,但我不知道如何創建循環throught不同羣體和過濾器類

ran.sample = sample(nrow(df_all), 30) 
df = df_all[ran.sample, ] 

任何想法的條件?

感謝

+0

你從每一組中'CLASS = 1'需要1個樣本行? –

+1

如果您使用'data.table',那麼可能有兩個重複項:[按類示例](http://stackoverflow.com/questions/16289182/how-do-you-sample-random-rows-within-each -group-in-a-data-table)和[不帶類的示例](http://stackoverflow.com/questions/24685421/how-do-you-extract-a-few-random-rows-from-a- data-table-on-fly) – etienne

+0

GROUP = A&CLASS = 1的30條記錄GROUP = B&CLASS = 1的30條記錄 – Selrac

回答

1

試試這個:

newdf <- df[df$CLASS==1,] 
do.call(rbind, lapply(split(newdf, newdf$GROUP), function(x) x[sample(nrow(x), 30),]))