【问题标题】:Randomly sample with if-else condition in R在R中使用if-else条件随机采样
【发布时间】:2016-04-13 10:03:13
【问题描述】:

给定一个表单中的数据框:

group          val
A              10
A              1
B              9
C              6
...

我想随机抽样每个group 中的val,结果是一个新的数据框。问题是每个groupval的数量不同,所以不能直接使用sample()。现在我想确定if-else 条件下的样本大小:如果val 的数量大于3,则采样三个vals。否则,所有val 都将作为样本。我怎样才能做到这一点?提前谢谢!

【问题讨论】:

  • @akrun 你说我做的?确实我不知道你在说什么?

标签: r random-sample


【解决方案1】:

我们可以使用data.table。将'data.frame'转换为'data.table'(setDT(df)),按'group'分组,我们得到'val'的sample

library(data.table)
setDT(df)[, .(val=sample(val)), by = group]

如果我们需要添加一个条件,使得if nrow 大于 3,sample 3 个值或else 所有值。

setDT(df)[, if(.N >3 ) sample(val, 3, replace=FALSE) else sample(val), by = group]

【讨论】:

  • 感谢您的回答,但我如何才能对大小由 if-else 条件确定的val 进行采样?谢谢。
  • @user5779223 我没有看到你的评论。更新了帖子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
相关资源
最近更新 更多