他の列で定義されたサブセットに基づいて、グループごとに複数の列の中央値を計算します

M.Teich

他の列で定義されたサブセットに基づいて、複数の列のグループごとに中央値を計算しようとしています(ただし、同様のメトリックで置き換えることができます)。これは、私の以前の投稿からの直接の後続の質問です。@Frankから提供さaggregateれたMap(function(x,y) dosomething, x, y)ソリューションに、viaの中央値の計算を組み込むことを試みましたが、うまくいきませんでした。説明させてください:

グループGRP1とGRP2によってAとBの中央値を計算します

df <- data.frame(GRP1 = c("A","A","A","A","A","A","B","B","B","B","B","B"), GRP2 = c("A","A","A","B","B","B","A","A","A","B","B","B"), A = c(0,4,6,7,0,1,9,0,0,8,3,4), B = c(6,0,4,8,6,7,0,9,9,7,3,0))

med <- aggregate(.~GRP1+GRP2,df,FUN=median)

シンプル。次に、中央値の計算に使用する行を定義する列を追加します。つまり、NAのある行を削除する必要があります。列aは、列BとBの場合と同じように、列Aの中央値の計算に使用する行を定義します。

a <- c(1,4,7,3,NA,3,7,NA,NA,4,8,1)
b <- c(5,NA,7,9,5,6,NA,8,1,7,2,9)
df1 <- cbind(df,a,b)

前述したように、私は組み合わせる試みているMapaggregate、それは動作しませんでした。私はそれMapがGRP1とGRP2をどうするかわからないと思います。

med1 <- Map(function(x,y) aggregate(.~GRP1+GRP2,df1[!is.na(y)],FUN=median), x=df1[,3:4], y=df1[, 5:6])

これは私が探している結果です:

  GRP1 GRP2 A B
1    A    A 4 5
2    B    A 9 9
3    A    B 4 7
4    B    B 4 3

どんな助けでも大歓迎です!

sindri_baldur

使用する data.table

library(data.table)
setDT(df1)

df1[, .(A = median(A[!is.na(a)]), B = median(B[!is.na(b)])), by = .(GRP1, GRP2)]

   GRP1 GRP2 A B
1:    A    A 4 5
2:    A    B 4 7
3:    B    A 9 9
4:    B    B 4 3

の同じロジック dplyr

library(dplyr)
df1 %>%
  group_by(GRP1, GRP2) %>%
  summarise(A = median(A[!is.na(a)]), B = median(B[!is.na(b)]))

オリジナルdf1

df1 <- data.frame(
  GRP1 = c("A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B"),
  GRP2 = c("A", "A", "A", "B", "B", "B", "A", "A", "A", "B", "B", "B"),
  A = c(0, 4, 6, 7, 0, 1, 9, 0, 0, 8, 3, 4),
  B = c(6, 0, 4, 8, 6, 7, 0, 9, 9, 7, 3, 0),
  a = c(1, 4, 7, 3, NA, 3, 7, NA, NA, 4, 8, 1),
  b = c(5, NA, 7, 9, 5, 6, NA, 8, 1, 7, 2, 9)
)

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

別の行列に基づいて、行列のサブセットの列ごとの平均(または他の関数)を計算します

分類Dev

PHP:開始値と終了値を持つ他の配列で定義された範囲に基づいて配列を断片にカットします

分類Dev

日付でグループ化された列挙値に基づいて、複数の列で最大スコアと名前を取得します

分類Dev

複数の列にわたる値の定義された比率に基づいてデータセットのバランスを取り直す方法は?

分類Dev

1つの列の合計に基づいて、パンダの他の2つの列でグループ化された新しい列を追加します

分類Dev

セット内の列値に基づいて新しい列の値を決定するためのスパーク集計/グループ化

分類Dev

列ごとに他の列グループに基づいて新しい列の値を取得する方法

分類Dev

他の2つの列のグループ化された値に基づいて平均列を取得します

分類Dev

Excel-別のグループ化列に基づいて、1つの列の値の平均を計算します。行数はグループごとに一定ではありません

分類Dev

Rの異なる列の基準に基づいて、グループ化されたデータに計算変数を作成します

分類Dev

値に基づいて配列要素をグループ化し、他の値の中央値を取得します

分類Dev

列の値に基づいて、グループ化された列ごとに1行のみを保持します

分類Dev

一意の列値に基づいて複数のサブセットを動的に作成します

分類Dev

Excel:別の列の値とマップされた値に基づいて値を合計します

分類Dev

指定された条件に基づいてグループごとに変数の値を減算するためのR関数はありますか?

分類Dev

Postgres / SQLサブクエリ-条件に基づいてグループごとに複数の列を返します

分類Dev

他の列の値に基づいて、列のデータフレーム行のサブセットに関数を適用します

分類Dev

日付列と重複行ごとに分割された集計列の違いに基づいて、SQLで行をどのように複製しますか?

分類Dev

他の列に基づいてGoogleスプレッドシートの日付列を計算します

分類Dev

複数の列でグループ化し、列の値に基づいて上位x行を抽出します

分類Dev

MYSQL:他の列でグループ化されたカウントに基づいて列値を設定する

分類Dev

Spark DataFrame:列の値に基づいて行ごとにソートされた列名を取得します

分類Dev

(要素ごとに)選択された隣接する列に基づいて、重複の行ごとの数を計算する方法

分類Dev

複数の列に基づいてデータフレーム内のサブセットの合計を計算する方法

分類Dev

列の値に基づいてグループにデータをサブセット化する

分類Dev

複数の行を列の値ごとに1つの行に結合し、複数の列について、連結された行の数に基づいて複数のデータフレームに分割します

分類Dev

きちんとした評価を使用して、グループごとに他の列の条件に基づいて新しい列を作成します

分類Dev

数値列のセットを合計し、文字列列をグループごとに折りたたむ

分類Dev

グループごとにすべての列の最小値を減算します-減算された値をdfの別の列に追加します

Related 関連記事

  1. 1

    別の行列に基づいて、行列のサブセットの列ごとの平均(または他の関数)を計算します

  2. 2

    PHP:開始値と終了値を持つ他の配列で定義された範囲に基づいて配列を断片にカットします

  3. 3

    日付でグループ化された列挙値に基づいて、複数の列で最大スコアと名前を取得します

  4. 4

    複数の列にわたる値の定義された比率に基づいてデータセットのバランスを取り直す方法は?

  5. 5

    1つの列の合計に基づいて、パンダの他の2つの列でグループ化された新しい列を追加します

  6. 6

    セット内の列値に基づいて新しい列の値を決定するためのスパーク集計/グループ化

  7. 7

    列ごとに他の列グループに基づいて新しい列の値を取得する方法

  8. 8

    他の2つの列のグループ化された値に基づいて平均列を取得します

  9. 9

    Excel-別のグループ化列に基づいて、1つの列の値の平均を計算します。行数はグループごとに一定ではありません

  10. 10

    Rの異なる列の基準に基づいて、グループ化されたデータに計算変数を作成します

  11. 11

    値に基づいて配列要素をグループ化し、他の値の中央値を取得します

  12. 12

    列の値に基づいて、グループ化された列ごとに1行のみを保持します

  13. 13

    一意の列値に基づいて複数のサブセットを動的に作成します

  14. 14

    Excel:別の列の値とマップされた値に基づいて値を合計します

  15. 15

    指定された条件に基づいてグループごとに変数の値を減算するためのR関数はありますか?

  16. 16

    Postgres / SQLサブクエリ-条件に基づいてグループごとに複数の列を返します

  17. 17

    他の列の値に基づいて、列のデータフレーム行のサブセットに関数を適用します

  18. 18

    日付列と重複行ごとに分割された集計列の違いに基づいて、SQLで行をどのように複製しますか?

  19. 19

    他の列に基づいてGoogleスプレッドシートの日付列を計算します

  20. 20

    複数の列でグループ化し、列の値に基づいて上位x行を抽出します

  21. 21

    MYSQL:他の列でグループ化されたカウントに基づいて列値を設定する

  22. 22

    Spark DataFrame:列の値に基づいて行ごとにソートされた列名を取得します

  23. 23

    (要素ごとに)選択された隣接する列に基づいて、重複の行ごとの数を計算する方法

  24. 24

    複数の列に基づいてデータフレーム内のサブセットの合計を計算する方法

  25. 25

    列の値に基づいてグループにデータをサブセット化する

  26. 26

    複数の行を列の値ごとに1つの行に結合し、複数の列について、連結された行の数に基づいて複数のデータフレームに分割します

  27. 27

    きちんとした評価を使用して、グループごとに他の列の条件に基づいて新しい列を作成します

  28. 28

    数値列のセットを合計し、文字列列をグループごとに折りたたむ

  29. 29

    グループごとにすべての列の最小値を減算します-減算された値をdfの別の列に追加します

ホットタグ

アーカイブ