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