Re: [問題] 用apply函數依比例抽樣 (sample())

作者: andrew43 (討厭有好心推文後刪文者)   2015-11-12 01:33:14
dat <- data.frame(
V1=c(1,3,4,NA,NA,NA,NA,NA,NA),
V2=c(2,5,6,8,9,12,NA,NA,NA),
V3=c(7,10,11,20,23,38,40,41,50)
)
apply(dat, 2, function(x, ratio = 1/3){
# 本欄哪些不是 NA
thisCol.is.not.NA <- !is.na(x)
# 本欄可抽幾次
thisCol.length <- round(sum(thisCol.is.not.NA) * ratio)
# 把抽出的傳出去
return(sample(x[thisCol.is.not.NA], thisCol.length))
})
其實和 C 板主寫的是一樣的,幫填註解而已。
※ 引述《gbd37 (有夠瞎)》之銘言:
: [問題類型]:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
: [軟體熟悉度]:
: 入門(寫過其他程式,只是對語法不熟悉)
: [問題敘述]:
: 想要使用apply函數來抽樣,依"比例"抽每行裡所含有的數
: 範例是我舉例的資料,第一行只有3個數字,第二行6個,第三行9個
: 我想依1/3的比例在第一行抽1個數字,第二行抽2個,第三行抽3個
: 但就在size那格我不知道該怎麼打,麻煩指導
: 謝謝
: [程式範例]:
: http://pastie.org/10548085
: [關鍵字]:
: apply sample
作者: celestialgod (天)   2015-11-12 11:58:00
哈,我個人比較懶拉QQ推
作者: earthbornman   2015-11-12 13:43:00
A大好細心喔!!
作者: andrew43 (討厭有好心推文後刪文者)   2015-11-13 06:40:00
只是做我可以做的工作,難的我也沒辦法。XD

Links booklink

Contact Us: admin [ a t ] ucptt.com