作者andrew43 (讨厌有好心推文後删文者)
看板R_Language
标题Re: [问题] 用apply函数依比例抽样 (sample())
时间Thu Nov 12 01:33:14 2015
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://webptt.com/cn.aspx?n=bbs/R_Language/M.1447263198.A.C98.html
1F:推 celestialgod: 哈,我个人比较懒拉QQ 11/12 11:58
2F:推 celestialgod: 推 11/12 11:58
3F:推 earthbornman: A大好细心喔!! 11/12 13:43
4F:→ andrew43: 只是做我可以做的工作,难的我也没办法。XD 11/13 06:40