Rデータフレームを使用したペアトランザクションのルールの割り当て

アラン

使用しているfor()データセット全体が非常に大きく、実行に永遠に時間がかかるため、Rでループを使用せずに解決したいトリッキーな問題次のデータを想像してみてください。

df_z <- data.frame(z_index       = c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4),
                   z             = c(800, 800, 800, 310, 310, 310, 763, 763, 763, 3621, 3621),
                   paired_type   = c("A", "B", "C", "A", "C", "F", "A", "B", "D", "C", "F"),
                   paired_amount = c(0, 1768, 3973, 40, 100, 22, 461, 0, 1499, 10817, 0))

これはショー4つの異なるz量(800310763および3621)。これらのそれぞれについて、私は持っているそれぞれの量の数、持っているpaired_type- 、ABCなどを私は徐々に「支出」は、各行を通過したいと思いzまで、ペアの量を減らすことに金額をz_amountに減少しました0このプロセスは、offset_typeすなわちの順に行われる必要があるA最初の、そしてB、その後C、など

そうするためにz_index例えば= 2、Iで始まるz = 310、私は上の40「過ごす」したいのですがpaired_type A、他100paired_type B、別22のをpaired_type Cして私を残し、148最後に残されました。

スプレッドシートで行うのは非常に簡単です。

ここに画像の説明を入力してください

しかし、それをRコードの一部に変換する方法は私には明らかではありません...

追加する必要があります:後でzの量を知る必要があるだけでなく、ペアになっている各量(つまり、スプレッドシートの最後の列)も知る必要があります。

誰か助けてもらえますか?dplyrベースのソリューションは特に歓迎します(私はdplyrかなりよく話します)

ありがとうございました。

27 ϕ 9

これにアプローチする1つの方法は次のとおりです。

library(dplyr)

df_z %>%
  group_by(z_index) %>%
  mutate(z_after_offset = pmax(0, cumsum(if_else(row_number() == 1, z, 0) - paired_amount)),
         z_after = min(z_after_offset),
         paired_amount_after = pmax(0, paired_amount - lag(z_after_offset, default = first(z))))

# A tibble: 11 x 7
# Groups:   z_index [4]
   z_index     z paired_type paired_amount z_after_offset z_after paired_amount_after
     <dbl> <dbl> <fct>               <dbl>          <dbl>   <dbl>               <dbl>
 1       1   800 A                       0            800       0                   0
 2       1   800 B                    1768              0       0                 968
 3       1   800 C                    3973              0       0                3973
 4       2   310 A                      40            270     148                   0
 5       2   310 C                     100            170     148                   0
 6       2   310 F                      22            148     148                   0
 7       3   763 A                     461            302       0                   0
 8       3   763 B                       0            302       0                   0
 9       3   763 D                    1499              0       0                1197
10       4  3621 C                   10817              0       0                7196
11       4  3621 F                       0              0       0                   0

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

トランザクションデータフレームを使用して同じクライアントがアクセスしたストアの列のペアを生成し、集計されたメトリックを計算します

分類Dev

rxJavaを使用したダウンストリームオペレーターのデータベース(SQLite)トランザクション

分類Dev

トランザクション分離レベルを使用したSQLServerでのデータのロック

分類Dev

Shopifyを使用したコレクションページのバリアントフィルター

分類Dev

Rのルールのトランザクションへのデータフレームの正しい変換

分類Dev

パンダ-スタイル-他のデータフレームを使用した背景グラデーション

分類Dev

iOSソーシャル/アカウントフレームワークを使用したTwitterユーザーデータの取得

分類Dev

パーティション化された寄木細工のディレクトリ(すべてのファイル)を1つのRデータフレームでapache矢印を使用して読み取ります

分類Dev

C#:リフレクションを介して異なる量のパラメーターでアクションに汎用マルチキャストデリゲートを割り当てます

分類Dev

JFrameを使用したグラフィカルアプリケーションのデザインパターン

分類Dev

Heroku Postgresを使用したレルムデータコネクタ:レプリケーションスロットを使用するには、スーパーユーザーまたはレプリケーションの役割である必要があります

分類Dev

オフライン時のFirebaseリアルタイムデータベーストランザクション

分類Dev

カスタムボディフィールドを使用してNetsuiteトランザクションへのリンクを追加する

分類Dev

スプリングインジェクションを使用したプライベート静的最終フィールドメンバーの割り当て

分類Dev

タプルインデックスを使用したloc選択による割り当てによって空のデータフレームを埋める

分類Dev

MEFを使用して、ユーザーがカスタムプラグインを追加したり、メソッドを実行したり、データポイントのコレクションを変更したりできるようにする

分類Dev

可能なラベルのバンクからデータフレームにラベルを割り当てる

分類Dev

RxJavaonNextのレルムトランザクションがアプリをフリーズします

分類Dev

devopspiplineでazurepowershellインラインスクリプトを使用したAzureデータファクトリアクセスポリシーの割り当て

分類Dev

ARMテンプレートを使用したAzureデータレイクストレージアカウントでのファイルシステムの作成

分類Dev

ブーストフュージョンフォールディング-ラムダを使用したパラメーターパックの折り畳み

分類Dev

デフォルト値を使用したKotlinデータクラスのSpringコンストラクターアノテーション

分類Dev

インターフェイスのコレクションを逆シリアル化すると、カスタムコンバーターを使用した以前のデータモデルからのJSONの逆シリアル化が失敗します

分類Dev

Rでグループ化されたトランザクションを使用して新しいデータフレームを作成するにはどうすればよいですか?

分類Dev

ローカル変数とは異なり、Rascalを使用したフロープログラムにはないコレクション型クラスフィールドへの新しい割り当て

分類Dev

.NET Core 2.2-エンティティフレームワーク-DbSet.FromSql()を使用した[NotMapped]モデル属性のカスタム割り当て

分類Dev

レール上のアクションケーブルルビーを使用したリアルタイムメッセージのエラー

分類Dev

IntelliJIdeaデザイナーが作成したダイアログを使用してクラスのフィールドでアクションを実行する方法

分類Dev

レイザービューフィールドのonchangeイベントで実行されるモデルデータアノテーションによってクライアント側を検証します

Related 関連記事

  1. 1

    トランザクションデータフレームを使用して同じクライアントがアクセスしたストアの列のペアを生成し、集計されたメトリックを計算します

  2. 2

    rxJavaを使用したダウンストリームオペレーターのデータベース(SQLite)トランザクション

  3. 3

    トランザクション分離レベルを使用したSQLServerでのデータのロック

  4. 4

    Shopifyを使用したコレクションページのバリアントフィルター

  5. 5

    Rのルールのトランザクションへのデータフレームの正しい変換

  6. 6

    パンダ-スタイル-他のデータフレームを使用した背景グラデーション

  7. 7

    iOSソーシャル/アカウントフレームワークを使用したTwitterユーザーデータの取得

  8. 8

    パーティション化された寄木細工のディレクトリ(すべてのファイル)を1つのRデータフレームでapache矢印を使用して読み取ります

  9. 9

    C#:リフレクションを介して異なる量のパラメーターでアクションに汎用マルチキャストデリゲートを割り当てます

  10. 10

    JFrameを使用したグラフィカルアプリケーションのデザインパターン

  11. 11

    Heroku Postgresを使用したレルムデータコネクタ:レプリケーションスロットを使用するには、スーパーユーザーまたはレプリケーションの役割である必要があります

  12. 12

    オフライン時のFirebaseリアルタイムデータベーストランザクション

  13. 13

    カスタムボディフィールドを使用してNetsuiteトランザクションへのリンクを追加する

  14. 14

    スプリングインジェクションを使用したプライベート静的最終フィールドメンバーの割り当て

  15. 15

    タプルインデックスを使用したloc選択による割り当てによって空のデータフレームを埋める

  16. 16

    MEFを使用して、ユーザーがカスタムプラグインを追加したり、メソッドを実行したり、データポイントのコレクションを変更したりできるようにする

  17. 17

    可能なラベルのバンクからデータフレームにラベルを割り当てる

  18. 18

    RxJavaonNextのレルムトランザクションがアプリをフリーズします

  19. 19

    devopspiplineでazurepowershellインラインスクリプトを使用したAzureデータファクトリアクセスポリシーの割り当て

  20. 20

    ARMテンプレートを使用したAzureデータレイクストレージアカウントでのファイルシステムの作成

  21. 21

    ブーストフュージョンフォールディング-ラムダを使用したパラメーターパックの折り畳み

  22. 22

    デフォルト値を使用したKotlinデータクラスのSpringコンストラクターアノテーション

  23. 23

    インターフェイスのコレクションを逆シリアル化すると、カスタムコンバーターを使用した以前のデータモデルからのJSONの逆シリアル化が失敗します

  24. 24

    Rでグループ化されたトランザクションを使用して新しいデータフレームを作成するにはどうすればよいですか?

  25. 25

    ローカル変数とは異なり、Rascalを使用したフロープログラムにはないコレクション型クラスフィールドへの新しい割り当て

  26. 26

    .NET Core 2.2-エンティティフレームワーク-DbSet.FromSql()を使用した[NotMapped]モデル属性のカスタム割り当て

  27. 27

    レール上のアクションケーブルルビーを使用したリアルタイムメッセージのエラー

  28. 28

    IntelliJIdeaデザイナーが作成したダイアログを使用してクラスのフィールドでアクションを実行する方法

  29. 29

    レイザービューフィールドのonchangeイベントで実行されるモデルデータアノテーションによってクライアント側を検証します

ホットタグ

アーカイブ