在 R 中使用 if-else 条件随机抽样
Randomly sample with if-else condition in R
给定以下形式的数据框:
group val
A 10
A 1
B 9
C 6
...
我想在每个 group
中随机抽样 val
,结果是一个新的数据框。问题是每个group
里面的val
的个数不一样,所以不能直接用sample()
。现在我想确定 if-else
条件下的样本量:如果 val
的数量大于,比方说,3,那么三个 val
被采样。否则所有 val
都被作为样本。我怎样才能做到这一点?提前致谢!
我们可以使用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]
给定以下形式的数据框:
group val
A 10
A 1
B 9
C 6
...
我想在每个 group
中随机抽样 val
,结果是一个新的数据框。问题是每个group
里面的val
的个数不一样,所以不能直接用sample()
。现在我想确定 if-else
条件下的样本量:如果 val
的数量大于,比方说,3,那么三个 val
被采样。否则所有 val
都被作为样本。我怎样才能做到这一点?提前致谢!
我们可以使用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]