2つの要約の結果を互いに分割するエレガントな方法はありますか?

C.トニ

次のような2つのデータフレームwwとppがあります。

> dput(ww)
structure(list(W_GEW = c(10.2353040126845, 0.831884443723177, 
0.0575388010226499, 1.32932249946475, 2.13545328158608, 1.50612800756816, 
2.41411532240417, 0.272920801750955, 3.79195336455684, 0.450693179969236, 
0.883654166531408, 0.603534664687679, 0.198110485099713, 0.342652280675876, 
0.289928028243725, 6.48435880991905, 0.95407351540347, 8.05653638220527, 
2.28316474679988, 0.487760497903453, 0.224996354463327, 0.553435733400469, 
0.330192354360254, 0.0876946359196857, 1.70203606555473), HP_SEX = c(2, 
2, 1, 2, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 
2, 1, 1)), row.names = c(NA, -25L), class = c("tbl_df", "tbl", 
"data.frame"))
> dput(pp)
structure(list(P_GEW = c(0.576128482078767, 1.25180927581909, 
0.102502993629535, 1.35359813678368, 1.56322227704677, 0.692845851279203, 
0.387225241732726, 6.42061013929398, 1.06395274428815, 1.17730952115625, 
1.57374838709105, 6.32338670691465, 1.12358902975024, 0.559852743148847, 
0.244938631158, 0.342884568546086, 0.166101271235082, 1.32857499401104, 
0.898931543979382, 0.830611859630472, 0.822265711424057, 0.183075471978817, 
3.67290388261628, 0.149252785037704, 0.523294953428612), HP_SEX = c(1, 
1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 
2, 1, 1)), row.names = c(NA, -25L), class = c("tbl_df", "tbl", 
"data.frame"))

私の最初のステップは、データフレームをHP_SEXでグループ化し、次のように要約することです。

> ww %>% 
+   group_by(HP_SEX) %>%
+   summarise(W_GEW = sum(W_GEW))
# A tibble: 2 x 2
  HP_SEX W_GEW
   <dbl> <dbl>
1      1  22.1
2      2  24.4
> pp %>% 
+   group_by(HP_SEX) %>%
+   summarise(P_GEW = sum(P_GEW)) 
# A tibble: 2 x 2
  HP_SEX P_GEW
   <dbl> <dbl>
1      1  12.4
2      2  21.0

次のステップは、W_GEWをHP_SEXで区切られたP_GEWで次のように除算することです。

22.1/12.4 = 1.78

24.4/21.0 = 1.16

これを1つのステップで、または1つの機能でエレガントに行う方法があれば、私は好奇心旺盛です。

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

akrun

データセットをに配置してlistから、の合計でグループ化を実行しlistreduceそれを単一のデータセットに分割して除算を実行できます。

library(dplyr)
library(purrr)
map(lst(ww, pp), ~ .x %>%
                      group_by(HP_SEX) %>% 
                      summarise_at(vars(-group_cols()), sum)) %>% 
      reduce(inner_join) %>% 
      mutate(GEW = W_GEW/P_GEW)
# A tibble: 2 x 4
#  HP_SEX W_GEW P_GEW   GEW
#   <dbl> <dbl> <dbl> <dbl>
#1      1  22.1  12.4  1.79
#2      2  24.4  21.0  1.16

また、一部のステップが再利用可能な場合は、関数を作成できます

f1 <- function(dat, grp) {
         dat %>% 
            group_by({{grp}}) %>%
            summarise_at(vars(-group_cols()), sum)
 }

map(list(ww, pp), f1, grp = HP_SEX) %>% 
     reduce(inner_join) %>% 
     mutate(GEW = W_GEW/P_GEW)

またはを使用して base R

transform(Reduce(merge, lapply(list(ww, pp), 
   function(dat) aggregate(.~ HP_SEX, dat, sum))), GEW = W_GEW/P_GEW)
#   HP_SEX    W_GEW    P_GEW      GEW
#1      1 22.13622 12.38124 1.787884
#2      2 24.37122 20.95138 1.163228

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

dplyr要約関数の結果をすべての行に追加する簡単な方法はありますか?

分類Dev

Tidyverseコマンドは非推奨になりつつあります:要約内でT検定を行い、すべての結果を報告します

分類Dev

関数の失敗した結果をフィルタリングするよりエレガントな方法はありますか?

分類Dev

Googleスプレッドシートのクエリで、2つの列の結果を連結/追加し、結果にテキストを追加する方法はありますか?(シートクエリ内に連結がないことを知っています)

分類Dev

行列の各行のtop [2〜3]値のみを保持するエレガントな方法はありますか?

分類Dev

自己結合で単一の列を選択するためのエレガントな方法はsqliteにありますか?

分類Dev

パンダのデータフレームを2つの補完的な部分に分割するより速い方法はありますか?

分類Dev

クエリの結果をレポート可能なチャンクに「スライス」する方法はありますか?

分類Dev

2つのタスクをトリガーし、1つが完了するのを待って(他のタスクをキャンセルせずに)、結果を返す前に時間を設定する方法はありますか?

分類Dev

配列内のどの要素が別のコンテナにあるかを確認するためのエレガントな方法はありますか?

分類Dev

イベント/トリガーを定期的にチェックするためのよりエレガントな方法はありますか?

分類Dev

2つの文字列を条件付きで新しい列に結合するエレガントな方法

分類Dev

2つの不変オブジェクトを互いに参照させる良い方法はありますか?

分類Dev

部分文字列を作成するためのよりエレガントな方法はありますか?

分類Dev

Scalaでどちらかのモナドを処理するエレガントな方法はありますか?

分類Dev

特定の列が特定の値を持つファイル内の行を選択するためのエレガントな方法はありますか?

分類Dev

`#pragma warning disable`の使用法をよりエレガントにする方法はありますか?

分類Dev

多くの変数について、いくつかのグループ間の倍率変化を計算するための高速でエレガントな方法はありますか?

分類Dev

同期APIに基づいて非同期APIを定義するScalaのエレガントな方法はありますか?

分類Dev

MFC:CBitmapCreateCompatibleBitmap()は、渡された2つの互換性のあるCDCに基づいて異なる結果を提供しますか?

分類Dev

Javaの - 日付/時間を解析するエレガントな方法はありますか?

分類Dev

Pythonで相対パスを取得するためのエレガントな方法はありますか?

分類Dev

英数字のサブタイプを定義するエレガントな方法はありますか?

分類Dev

Pythonで辞書ループ例外を処理するためのより良いまたはよりエレガントな方法はありますか?

分類Dev

Haskellでこのパターンをエレガントに表現する方法はありますか?

分類Dev

マップのストリームを1つのマップに減らすエレガントな方法はありますか

分類Dev

Meteor + Mongodb:db.find()の結果からいくつかのサブドキュメントを完全に除外する方法はありますか?

分類Dev

このコードよりもJavaでXMLドキュメントを文字列に変換するよりエレガントな方法はありますか?

分類Dev

関数の引数に基づいて画像の名前を返す関数を書くよりエレガントな方法はありますか?

Related 関連記事

  1. 1

    dplyr要約関数の結果をすべての行に追加する簡単な方法はありますか?

  2. 2

    Tidyverseコマンドは非推奨になりつつあります:要約内でT検定を行い、すべての結果を報告します

  3. 3

    関数の失敗した結果をフィルタリングするよりエレガントな方法はありますか?

  4. 4

    Googleスプレッドシートのクエリで、2つの列の結果を連結/追加し、結果にテキストを追加する方法はありますか?(シートクエリ内に連結がないことを知っています)

  5. 5

    行列の各行のtop [2〜3]値のみを保持するエレガントな方法はありますか?

  6. 6

    自己結合で単一の列を選択するためのエレガントな方法はsqliteにありますか?

  7. 7

    パンダのデータフレームを2つの補完的な部分に分割するより速い方法はありますか?

  8. 8

    クエリの結果をレポート可能なチャンクに「スライス」する方法はありますか?

  9. 9

    2つのタスクをトリガーし、1つが完了するのを待って(他のタスクをキャンセルせずに)、結果を返す前に時間を設定する方法はありますか?

  10. 10

    配列内のどの要素が別のコンテナにあるかを確認するためのエレガントな方法はありますか?

  11. 11

    イベント/トリガーを定期的にチェックするためのよりエレガントな方法はありますか?

  12. 12

    2つの文字列を条件付きで新しい列に結合するエレガントな方法

  13. 13

    2つの不変オブジェクトを互いに参照させる良い方法はありますか?

  14. 14

    部分文字列を作成するためのよりエレガントな方法はありますか?

  15. 15

    Scalaでどちらかのモナドを処理するエレガントな方法はありますか?

  16. 16

    特定の列が特定の値を持つファイル内の行を選択するためのエレガントな方法はありますか?

  17. 17

    `#pragma warning disable`の使用法をよりエレガントにする方法はありますか?

  18. 18

    多くの変数について、いくつかのグループ間の倍率変化を計算するための高速でエレガントな方法はありますか?

  19. 19

    同期APIに基づいて非同期APIを定義するScalaのエレガントな方法はありますか?

  20. 20

    MFC:CBitmapCreateCompatibleBitmap()は、渡された2つの互換性のあるCDCに基づいて異なる結果を提供しますか?

  21. 21

    Javaの - 日付/時間を解析するエレガントな方法はありますか?

  22. 22

    Pythonで相対パスを取得するためのエレガントな方法はありますか?

  23. 23

    英数字のサブタイプを定義するエレガントな方法はありますか?

  24. 24

    Pythonで辞書ループ例外を処理するためのより良いまたはよりエレガントな方法はありますか?

  25. 25

    Haskellでこのパターンをエレガントに表現する方法はありますか?

  26. 26

    マップのストリームを1つのマップに減らすエレガントな方法はありますか

  27. 27

    Meteor + Mongodb:db.find()の結果からいくつかのサブドキュメントを完全に除外する方法はありますか?

  28. 28

    このコードよりもJavaでXMLドキュメントを文字列に変換するよりエレガントな方法はありますか?

  29. 29

    関数の引数に基づいて画像の名前を返す関数を書くよりエレガントな方法はありますか?

ホットタグ

アーカイブ