しきい値を超えるまで、交換してサンプリングを繰り返します

IDと金額の2つの変数を持つデータセットがあります。サンプリングされた金額の合計が元の金額の合計を超えるまで、レコードを(置換して)サンプリングしたいと思います。

動作するサンプルコードがありますが、より良い方法はありますか?大きなデータセットで最終的に100Kの反復を実行したいのですが、私の方法は不格好なようです。

以下のコードでは、3回の反復を実行しています。

set.seed(7777)

df <- data.frame(ID = seq(1,5),
                 AMT = sample(1:100, 5, replace = T))

threshold <- sum(df$AMT)

output <- NULL
for (i in 1:3) {
  repeat{
    sel <- df[sample(nrow(df), size = 1),]
    sel <- cbind(iter=i, sel)
    output <- rbind(output,
                    sel)
    check_sum <- subset(output, iter == i)
    if(sum(check_sum$AMT) > threshold) break
  }
}
PoGibas

再帰(自分自身を呼び出す関数)を使用できます。また、すべてのサンプリング結果を保存する必要はありません(ここでは行番号のみを保存します)。

set.seed(7777)
df <- data.frame(ID = 1:5,AMT = sample(1:100, 5, TRUE))
threshold <- sum(df$AMT)
# Specify N not to call it multiple times
N <- nrow(df)

repeatUntilSum <- function(input = NULL) {
    # Sample one row number and join with input
    result <- c(sample(N, 1), input)
    # Check if still too low 
    if (sum(df$AMT[result]) <= threshold) {
        # Run function again
        repeatUntilSum(result)
    } else {
        # Return full sampled result
        return(df[result, ])
    }
}

サンプリングn時間を実行するには、を使用しますlapply(を使用して簡単に結合できるリストを返しますdata.table::rbindlist)。

data.table::rbindlist(lapply(1:3, repeatUntilSum), idcol = "iter")

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

しきい値を超えてパンダでNaN値が繰り返されている行を削除する

分類Dev

Rの異なるランレングスに基づいて連続する繰り返し値を置き換えます

分類Dev

しきい値を超えるすべての値が抽出されるまで、ファイルを繰り返し処理します

分類Dev

リストを繰り返し処理し、値をインデックスに置き換えます

分類Dev

パンダ:列値のランダムサンプリングを使用してNaNを置き換えます

分類Dev

正規表現を使用して、繰り返される XML タグの値を置き換えます

分類Dev

ユーザーが「いいえ」ボタンをクリックするまで、whileループを使用してタスクを繰り返しますか?

分類Dev

ランダムにサンプリングされた列を集計して、ビンサイズを繰り返し大きくします

分類Dev

すでに選択した選択肢を削除せずにisMultiを使用できる方法はありますか?言い換えれば、選択したオプションを複製/繰り返していますか?

分類Dev

交換を伴うサンプル、繰り返しを避ける

分類Dev

文字列に基づいて行を繰り返し、新しい行の値を置き換えます

分類Dev

Kotlin / Regex-パターンのグループを繰り返し文字に置き換えます

分類Dev

繰り返し値を0に置き換えます

分類Dev

PHPを使用して、HTMLタグ内の繰り返されるコンテンツの特定のコンテンツをIDに置き換えます

分類Dev

特にRで繰り返しパターンを置き換える方法はありますか?

分類Dev

リストのすべての可能なnサンプリングを繰り返します

分類Dev

スクリプト内の行を行を繰り返して交換します

分類Dev

配列に値を繰り返し追加し、値を置き換えます

分類Dev

距離の測定値がしきい値を超えるパンダ列の要素を置き換えます

分類Dev

2つの列間で値を交換できる重複エントリを見つけて削除します

分類Dev

話す順番を超えて繰り返される単語形式を繰り返し抽出します

分類Dev

交換してパンダDataFrameをサンプリングする方法は?

分類Dev

カウントがしきい値を超えている場合にのみヒストグラムのビンをプロットします

分類Dev

リスト内の連続する繰り返し値をNAに置き換えます

分類Dev

正規表現は繰り返しパターンを置き換えます

分類Dev

警告:タイルのメモリ制限を超えました。一部のコンテンツが描画されず、ChromeDriverSeleniumを使用して長いページをレンダリングしているときにスクリーンショットをキャプチャできない場合があります

分類Dev

特定のウィンドウサイズを超える場合は、divの背景を交換します

分類Dev

繰り返しランダムサンプリングを生成する

分類Dev

欠落している値を平均値でグループ化して置き換えます

Related 関連記事

  1. 1

    しきい値を超えてパンダでNaN値が繰り返されている行を削除する

  2. 2

    Rの異なるランレングスに基づいて連続する繰り返し値を置き換えます

  3. 3

    しきい値を超えるすべての値が抽出されるまで、ファイルを繰り返し処理します

  4. 4

    リストを繰り返し処理し、値をインデックスに置き換えます

  5. 5

    パンダ:列値のランダムサンプリングを使用してNaNを置き換えます

  6. 6

    正規表現を使用して、繰り返される XML タグの値を置き換えます

  7. 7

    ユーザーが「いいえ」ボタンをクリックするまで、whileループを使用してタスクを繰り返しますか?

  8. 8

    ランダムにサンプリングされた列を集計して、ビンサイズを繰り返し大きくします

  9. 9

    すでに選択した選択肢を削除せずにisMultiを使用できる方法はありますか?言い換えれば、選択したオプションを複製/繰り返していますか?

  10. 10

    交換を伴うサンプル、繰り返しを避ける

  11. 11

    文字列に基づいて行を繰り返し、新しい行の値を置き換えます

  12. 12

    Kotlin / Regex-パターンのグループを繰り返し文字に置き換えます

  13. 13

    繰り返し値を0に置き換えます

  14. 14

    PHPを使用して、HTMLタグ内の繰り返されるコンテンツの特定のコンテンツをIDに置き換えます

  15. 15

    特にRで繰り返しパターンを置き換える方法はありますか?

  16. 16

    リストのすべての可能なnサンプリングを繰り返します

  17. 17

    スクリプト内の行を行を繰り返して交換します

  18. 18

    配列に値を繰り返し追加し、値を置き換えます

  19. 19

    距離の測定値がしきい値を超えるパンダ列の要素を置き換えます

  20. 20

    2つの列間で値を交換できる重複エントリを見つけて削除します

  21. 21

    話す順番を超えて繰り返される単語形式を繰り返し抽出します

  22. 22

    交換してパンダDataFrameをサンプリングする方法は?

  23. 23

    カウントがしきい値を超えている場合にのみヒストグラムのビンをプロットします

  24. 24

    リスト内の連続する繰り返し値をNAに置き換えます

  25. 25

    正規表現は繰り返しパターンを置き換えます

  26. 26

    警告:タイルのメモリ制限を超えました。一部のコンテンツが描画されず、ChromeDriverSeleniumを使用して長いページをレンダリングしているときにスクリーンショットをキャプチャできない場合があります

  27. 27

    特定のウィンドウサイズを超える場合は、divの背景を交換します

  28. 28

    繰り返しランダムサンプリングを生成する

  29. 29

    欠落している値を平均値でグループ化して置き換えます

ホットタグ

アーカイブ