看板 R_Language 關於我們 聯絡資訊
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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.37.172 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1447263198.A.C98.html
celestialgod: 哈,我個人比較懶拉QQ 11/12 11:58
celestialgod: 推 11/12 11:58
earthbornman: A大好細心喔!! 11/12 13:43
andrew43: 只是做我可以做的工作,難的我也沒辦法。XD 11/13 06:40