一連の条件に基づいて、複数の列にわたる各行のカスタム平均を計算します

Ekow_ababio

私は複雑な問題を抱えています。誰かが私を助けてくれればありがたいです。さまざまな年のさまざまな国の調査データを追加して構成されたデータフレームがあります。上記のデータフレームには、回答者が選ばれた地域の大気質測定値もあります。大気質データは1998年から2016年までです。

私の問題は、回答者の年齢と大気質データの年数に基づいて、各人の行平均(または累積平均曝露量)を計算したいということです。私のデータフレームは次のようになります

dat <- data.frame(ID=c(1:2000), dob = sample(1990:2020, size=2000, replace=TRUE),
              survey_year=rep(c(1998, 2006, 2008, 2014, 2019), times=80, each=5),
              CNT = rep(c('AO', 'GH', 'NG', 'SL', 'UG'), times=80, each=5),
              Ozone_1998=runif(2000), Ozone_1999=runif(2000), Ozone_2000=runif(2000),
              Ozone_2001=runif(2000), Ozone_2002=runif(2000), Ozone_2003=runif(2000),
              Ozone_2004=runif(2000), Ozone_2005=runif(2000), Ozone_2006=runif(2000),
              Ozone_2007=runif(2000), Ozone_2008=runif(2000), Ozone_2009=runif(2000),
              Ozone_2010=runif(2000), Ozone_2011=runif(2000), Ozone_2012=runif(2000),
              Ozone_2013=runif(2000), Ozone_2014=runif(2000), Ozone_2015=runif(2000),
              Ozone_2016=runif(2000))

上記のデータフレームの例では、Ao国のすべての回答者の累積平均大気質曝露はOzone_1998に制限され、SL国の回答者の平均はOzone_1998からOzone_2014に基づいて計算されます。

次のことは、15歳のSLの国の人にとって、累積曝露量をOzone_2000からOzone_2014までにしたいということです(彼らの人生の15年間は、彼らの誕生年を含みます)。16歳の人は、Ozone_1999からOzone_2014などの平均を持ちます。

Rでこの複雑なタスクを実行する方法はありますか?

注意:私の質問は私が投稿した別の質問と似ていますが(以下のリンクを参照)、このタスクは非常に複雑です。前の質問にソリューションを適合させようとしましたが、うまくいきませんでした。例えば、私は試しました

dat$mean_exposure = dat %>% pivot_longer(starts_with("Ozone"), names_pattern = "(.*)_(.*)", names_to = c("type", "year")) %>% 
  mutate(year = as.integer(year)) %>% group_by(ID) %>% 
  summarize(mean_under5_ozone = mean(value[ between(year, survey_year,survey_year + 0) ]), .groups = "drop")


but got an error 

*Error: Problem with `summarise()` input `mean_under5_ozone`.
x `left` must be length 1
i Input `mean_under5_ozone` is `mean(value[between(year, survey_year, survey_year + 0)])`.
i The error occurred in group 1: ID = 1.*

前の質問へのリンク

行固有の基準に基づいて、複数の列にわたる各行のカスタム平均を計算するにはどうすればよいですか?

ありがとうございました

ターキン

あなたの最後の質問からの片付けのステップはうまくいきます:

tidy_data = dat %>%
  pivot_longer(
    starts_with("Ozone"),
    names_pattern = "(.*)_(.*)",
    names_to = c(NA, "year"),
    values_to = "ozone"
  ) %>% 
  mutate(year = as.integer(year))

これで、国/年齢別に平均露出を取得したい年を除外できます。

mean_lifetime_exposure = tidy_data %>%
  group_by(CNT, dob) %>%
  filter(year >= dob) %>%
  summarise(mean(ozone))

PS申し訳ありませんが、国AOについての最初の質問がよくわかりません。

編集:

これはあなたが望んでいたことをしますか?ロジックは少し複雑ですが、コードは単純です。

tidy_data_filtered = tidy_data %>%
  filter(
    !(CNT == "AO" & year != 1998),
    !(CNT == "SL" & !year %in% 1998:2014)
  )

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Pandasデータフレーム-複数の条件計算に基づいて複数の列を作成します

分類Dev

複数の列にわたる特定の条件に基づいて最新性を計算する-パンダ

分類Dev

複数の条件に基づいて列を計算する

分類Dev

複数の列にわたる複数の基準に基づいて計算する

分類Dev

Rの条件に基づいて重複した値を区別するカスタム関数

分類Dev

グループ化して、パンダの複数の条件に基づいてカウントと平均を計算します

分類Dev

複数の変数に基づいてデータのサブセットの平均を計算する(すべての組み合わせについて)

分類Dev

別の列に基づいて列の平均を計算する

分類Dev

pandasデータフレームのラベルに基づいて列の平均を計算します

分類Dev

複数の行の値に基づいて新しい列を計算する

分類Dev

条件に基づいて複数の行の列値を連結します

分類Dev

Rの条件に基づいて複数の列を減算します

分類Dev

複数の列の値に一致する条件に基づいてデータを選択します

分類Dev

パンダ:異なる列のカテゴリに従って、複数の列の値をグループ化します。そして、そのカテゴリのグループ化に基づいて平均を計算します

分類Dev

Python 1つの列から複数の平均を計算し、別の列の値に基づいて平均する行を選択する方法

分類Dev

条件(つまり、averageifs)に基づいてパンダデータフレームの各列の平均を計算します

分類Dev

別のデータセットの列に基づいて統計(合計、平均など)を計算します

分類Dev

複数の条件に基づいて、NumPy配列の連続する要素のグループを取得します

分類Dev

過去15分間に基づいて、各行の大きなデータフレームの平均を計算します

分類Dev

pysparkの列とウィンドウ期間のフィルタリングされた条件に基づいて平均を計算します

分類Dev

複数のデータフレームにわたって新しい列を計算する

分類Dev

kdbの単一の条件に基づいて複数の列を更新します

分類Dev

Rの2番目の列のマーカーに基づいて平均を計算します

分類Dev

複数の列の複数の条件の組み合わせに基づいて、データフレームの新しい列に値を割り当てる方法

分類Dev

別々の列の場所に基づいてデータフレームの平均を計算する

分類Dev

Rの条件に基づいて、データフレームに複数の新しい列を追加します

分類Dev

パンダの別の列値に基づいて列ベースの特定の条件を計算する汎用関数を記述します

分類Dev

Pythonのカスタム関数に基づいてデータフレームの各列を集計する

分類Dev

レーキタスクの属性に基づいて条件付きで平均を計算する(Rails)

Related 関連記事

  1. 1

    Pandasデータフレーム-複数の条件計算に基づいて複数の列を作成します

  2. 2

    複数の列にわたる特定の条件に基づいて最新性を計算する-パンダ

  3. 3

    複数の条件に基づいて列を計算する

  4. 4

    複数の列にわたる複数の基準に基づいて計算する

  5. 5

    Rの条件に基づいて重複した値を区別するカスタム関数

  6. 6

    グループ化して、パンダの複数の条件に基づいてカウントと平均を計算します

  7. 7

    複数の変数に基づいてデータのサブセットの平均を計算する(すべての組み合わせについて)

  8. 8

    別の列に基づいて列の平均を計算する

  9. 9

    pandasデータフレームのラベルに基づいて列の平均を計算します

  10. 10

    複数の行の値に基づいて新しい列を計算する

  11. 11

    条件に基づいて複数の行の列値を連結します

  12. 12

    Rの条件に基づいて複数の列を減算します

  13. 13

    複数の列の値に一致する条件に基づいてデータを選択します

  14. 14

    パンダ:異なる列のカテゴリに従って、複数の列の値をグループ化します。そして、そのカテゴリのグループ化に基づいて平均を計算します

  15. 15

    Python 1つの列から複数の平均を計算し、別の列の値に基づいて平均する行を選択する方法

  16. 16

    条件(つまり、averageifs)に基づいてパンダデータフレームの各列の平均を計算します

  17. 17

    別のデータセットの列に基づいて統計(合計、平均など)を計算します

  18. 18

    複数の条件に基づいて、NumPy配列の連続する要素のグループを取得します

  19. 19

    過去15分間に基づいて、各行の大きなデータフレームの平均を計算します

  20. 20

    pysparkの列とウィンドウ期間のフィルタリングされた条件に基づいて平均を計算します

  21. 21

    複数のデータフレームにわたって新しい列を計算する

  22. 22

    kdbの単一の条件に基づいて複数の列を更新します

  23. 23

    Rの2番目の列のマーカーに基づいて平均を計算します

  24. 24

    複数の列の複数の条件の組み合わせに基づいて、データフレームの新しい列に値を割り当てる方法

  25. 25

    別々の列の場所に基づいてデータフレームの平均を計算する

  26. 26

    Rの条件に基づいて、データフレームに複数の新しい列を追加します

  27. 27

    パンダの別の列値に基づいて列ベースの特定の条件を計算する汎用関数を記述します

  28. 28

    Pythonのカスタム関数に基づいてデータフレームの各列を集計する

  29. 29

    レーキタスクの属性に基づいて条件付きで平均を計算する(Rails)

ホットタグ

アーカイブ