作者andrew43 (讨厌有好心推文後删文者)
看板R_Language
标题Re: [问题]每行依比例随机抽样
时间Sat May 19 18:49:49 2018
# 决定谁要变成0的矩阵
ind <- replicate(100, sample(c(rep(T, 6), rep(F, 4))))
# 按ind改M
M <- matrix(1:1000, 10, 100)
M[ind] <- 0
M
# check
apply(ind, 2, sum)
apply(M, 2, function(x) {
length(which(x == 0))
})
M
※ 引述《pp61022 (fight)》之铭言:
: [问题类型]:
: 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R写出来)
: [软体熟悉度]:
: 使用者(已经有用R 做过不少作品)
: [问题叙述]:
: 请简略描述你所要做的事情,或是这个程式的目的
: 我有一个矩阵 10*100 (n=10, p=100)
: 我想要把这100行,每行都依比例随机选出几个值,改成指定值
: 例如:
: 原始资料范例
: V1 V2 V3 .... V100
: 1 10 5 4 .... 42
: 2 7 15 18 .... 58
: 3 12 10 77 .... 41
: 4 9 18 65 .... 74
: 5 47 57 10 .... 81
: 6 1 46 18 .... 72
: 7 37 9 49 .... 30
: 8 17 8 75 .... 37
: 9 36 14 10 .... 6
: 10 71 36 87 .... 48
: 每行各随机选取6个值改成我的指定值
: 转换後资料范例
: V1 V2 V3 .... V100
: 1 10 5 0 .... 0
: 2 7 0 18 .... 0
: 3 0 10 0 .... 41
: 4 9 0 65 .... 0
: 5 0 0 0 .... 81
: 6 1 46 0 .... 0
: 7 0 0 49 .... 30
: 8 0 8 0 .... 37
: 9 0 0 10 .... 0
: 10 0 0 0 .... 0
: 我一开始是整笔资料直接*0.6 随机填成指定值,但後来回去看资料,
: 因为n太少,很容易整行都变成指定值,但我不想要整行都被改成指定值,
: 才想询问有没有版友知道可以怎麽设定每行随机抽样的比例,谢谢大家。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.246.78.20
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1526726993.A.B6D.html
1F:推 celestialgod: replicate如果多一点行数,最後会变瓶颈 05/19 19:08
2F:推 pp61022: 谢谢版友,我後来也有想到replicate随机选取每行数字, 05/19 19:09
3F:→ pp61022: 正在尝试时您已经提供解法,谢谢您 05/19 19:09
4F:→ pp61022: 可以请教一下为什麽replicate多一点行数,最後会变成瓶颈 05/19 19:10
5F:→ pp61022: 吗?谢谢 05/19 19:10
6F:→ andrew43: 在练习阶段我会倾向生成ind方便事後检查 05/20 00:34
7F:→ andrew43: 以本例资料量来看replicate不到百万都不必太过顾率 05/20 00:38