2012-04-20 20 views
12

如果我在R中有一個大的數據集,如何考慮原始數據的分佈情況,如何對數據進行隨機抽樣,特別是在數據偏斜且只有1%屬於次要類別,我想對數據採取偏倚的樣本?從R中的數據集中獲取不成比例的樣本R

+1

導入數據,找到你的「水平」的權重,讓'樣品'照顧其餘的。如果你可以縮小問題的範圍(至少是示例數據 - http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),這將有所幫助。 – 2012-04-22 18:41:07

+0

另請參閱http://stackoverflow.com/questions/2923092/how-do-i-sub-sample-data-by-group-using-ddply – 2012-04-24 16:14:33

回答

20

sample(x, n, replace = FALSE, prob = NULL)函數從一個大小爲n的矢量x中取樣。此樣品可以是用無需更換,以及選擇的每個元素到樣品的概率可以是相同的每個元素,或由用戶通知的載體

如果你想利用相同概率的樣本爲每個元素50例,所有你需要做的就是

n <- 50 
smpl <- df[sample(nrow(df), 50),] 

但是,如果你想給被選定爲元素的不同可能性,讓我們說,元素中號有概率0.25,而那些˚F有概率0.75,你SH應該做

n <- 50 
prb <- ifelse(sex=="M",0.25,0.75) 
smpl <- df[sample(nrow(df), 50, prob = prb),] 
+0

除非我在這裏錯過了一些明顯的東西,我得到'錯誤在ifelse中(sex ==「M」,0.25,0.75):試圖運行最後一個例子的對象'sex'not found'。 – Harry 2016-08-16 09:29:46

+1

雖然我只是在'sample'函數中使用'prob = ifelse(df $ sex ==「M」,0.25,0.75)''來工作。 – Harry 2016-08-16 10:31:55