全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1298 3
2020-05-19
悬赏 500 个论坛币 未解决
比如说我的数据框是这样的

x1 x2 x3 x4 x5
1  0   3   0   4
2  1   1   0   8
2  2   1   1   2
4  1   1   9   11

以上的求和是54,我知道sample函数是随机取的【个数】一定,但是如果我需要 随机抽出的样本 是【总和】一定呢?
比如随机抽样一次,随机取的数量(size) 无所谓,但是保证最后形成的新数据框 求和是30
比如变成这样

x1  x2  x4  x5
1   2    3    8
2   2    1   11
求和为30
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-5-20 09:08:43
我能想到的就是通过遍历的方式随机识别,不过这样效率好低呀。应该还有别的办法...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-5-20 18:40:07
个人感觉你的这个已经不能叫随机抽样了
写了一个小程序,应该还可以优化,供君参考
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-5-20 18:43:05
d <-
  matrix(c(1, 2, 2, 4, 0, 1, 2, 1, 3, 1, 1, 1, 0, 0, 1, 9, 4, 8, 2, 11), 4)
k = 1
repeat {
  i <- sample(1:(dim(d)[1]), 1)
  a <- matrix(0, dim(d)[1], dim(d)[2])
  for (j in 1:dim(d)[2]) {
    a[, j] <- c(sample(d[, j], i), rep(0, dim(d)[1] - i))
    if (sum(a) == 30) {
      print(a)
      break
    }
  }
  if (k > 10000)
    break
  k <- k + 1
}
结果有很多很多,当然没想办法识别重复结果,所以设了k作终止条件。你试试吧。
另外,不要你的币,我的币已经够多的了。就是玩。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群