簡體   English   中英

在R中使用if-else條件隨機采樣

[英]Randomly sample with if-else condition in R

給定以下形式的數據框:

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

我想隨機采樣每個groupval ,結果是一個新的數據框。 問題是每個groupval的數量不同,所以我不能直接使用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 sample所有值。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM