dplyrcross()で複数の関数を使用して要約する

userLL

id変数が一意の観測値を識別する必要があるデータがあります。ただし、一部のIDは繰り返されます。idでグループ化し、各変数の一貫性のない応答の割合を計算することで、どの測定がこの繰り返しを促進しているかを把握したいと思います。

以下は私が意味することの例です:

require(tidyverse)

df <- tibble(id = c(1,1,2,3,4,4,4),
             col1 = c('a','a','b','b','c','c','c'), # perfectly consistent
             col2 = c('a','b','b','b','c','c','c'), # id 1 is inconsistent - proportion inconsistent = 0.25
             col3 = c('a','a','b','b','a','b','c'), # id 4 is inconsistent - proportion inconsistent = 0.25
             col4 = c('a','b','b','b','b','b','c') # id 1 and 4 are inconsistent - proportion inconsistent = 0.5
             )

以下のように、group_by()、across()、およびn_distinct()を使用して、ID内の一貫性のない応答をテストできます。

# count the number of distinct responses for each id in each column
# if the value is equal to 1, it means that all responses were consistent
df <- df %>% 
  group_by(id) %>% 
  mutate(across(.cols = c(col1:col4), ~n_distinct(.), .names = '{.col}_distinct')) %>% 
  ungroup()

簡単にするために、IDごとに1行を取ることができます。

# take one row for each test (so we aren't counting duplicates twice)
df <- distinct(df, across(c(id, contains('distinct'))))

ここで、各変数の一貫性のない応答を含むIDの割合を計算したいと思います。私は次のようなことをしたいと思います:

consistency <- df %>% 
  summarise(across(contains('distinct'), ~sum(.>1) / n(.)))

しかし、これにより次のエラーが発生し、解釈に問題があります。

Error: Problem with `summarise()` input `..1`.
x unused argument (.)
ℹ Input `..1` is `across(contains("distinct"), ~sum(. > 1)/n(.))`.

私は次のことをすることによって私が望む答えを得ることができます:

# calculate consistency for each column by finding the number of distinct values greater 
# than 1 and dividing by total rows
# first get the number of distinct values
n_inconsistent <- df %>% 
  summarise(across(.cols = contains('distinct'), ~sum(.>1)))

# next get the number of rows
n_total <- nrow(df)

# calculate the proportion of tests that have more than one value for each column
consistency <- n_inconsistent %>% 
  mutate(across(contains('distinct'), ~./n_total))

しかし、これには中間変数が含まれ、エレガントではないと感じます。

ロナックシャー

あなたは次の方法でそれを行うことができます:

library(dplyr)

df %>%
  group_by(id) %>%
  summarise(across(starts_with('col'), n_distinct)) %>%
  summarise(across(starts_with('col'), ~mean(. > 1), .names = '{col}_distinct'))

#  col1_distinct col2_distinct col3_distinct col4_distinct
#          <dbl>         <dbl>         <dbl>         <dbl>
#1             0          0.25          0.25           0.5

まず、各列の一意の値の数をカウントしid、次に各列の1を超える値の割合を計算します。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

dplyrを使用して2つの関数で要約する方法

分類Dev

Rで複数のパラメーターを必要とする関数を使用して要約する

分類Dev

r複数の要素を使用して要約するdata.table

分類Dev

dplyrを使用して複数のグループで要約する

分類Dev

五数要約を使用して点群を生成する関数

分類Dev

複数の列情報を使用して要約変数を作成する方法

分類Dev

多くの変数で要約関数を使用する

分類Dev

jqreduceを使用して複数の値を要約します

分類Dev

dplyrcrossを使用して複数の列のNAをフィルタリングする方法

分類Dev

複数の列内の因子にカスタム要約関数を使用する

分類Dev

Rは、データフレームから実際の予測値を使用する複数の評価メトリック関数で要約します

分類Dev

jsで関数を要約する

分類Dev

dplyr:1つの関数を使用して要約で2つの列を返すことは可能ですか?

分類Dev

rのdplyrを使用して、さまざまな関数でさまざまな列を要約します

分類Dev

R(およびdplyr)を使用して、因子情報を含む複数の要約テーブルを作成する

分類Dev

複数の列を別の列の値で要約します

分類Dev

1つの行に複数の割り当てを要約する

分類Dev

pythonpandasデータフレームで複数の列を使用して要約します

分類Dev

ScopedTypeVariablesを使用してfmap関数の引数を制約する

分類Dev

Aggregate.data.frame関数を使用してrdata.frame内のデータを要約する

分類Dev

Python Pandas-両方がgroupby関数を使用して要約されている場合、1つの列のデータを別の列で分割する

分類Dev

dplyrで複数の列を要約しますか?

分類Dev

dplyrcross()関数で直感的に名前を設定する

分類Dev

複数のバッチで要約を平均化する方法は?

分類Dev

複数のバッチで要約を平均化する方法は?

分類Dev

複数のバッチで要約を平均化する方法は?

分類Dev

要約で複数の列を作成する

分類Dev

複数の列からSASで要約列を作成する

分類Dev

SQLで複数のフィールドを要約する方法

Related 関連記事

  1. 1

    dplyrを使用して2つの関数で要約する方法

  2. 2

    Rで複数のパラメーターを必要とする関数を使用して要約する

  3. 3

    r複数の要素を使用して要約するdata.table

  4. 4

    dplyrを使用して複数のグループで要約する

  5. 5

    五数要約を使用して点群を生成する関数

  6. 6

    複数の列情報を使用して要約変数を作成する方法

  7. 7

    多くの変数で要約関数を使用する

  8. 8

    jqreduceを使用して複数の値を要約します

  9. 9

    dplyrcrossを使用して複数の列のNAをフィルタリングする方法

  10. 10

    複数の列内の因子にカスタム要約関数を使用する

  11. 11

    Rは、データフレームから実際の予測値を使用する複数の評価メトリック関数で要約します

  12. 12

    jsで関数を要約する

  13. 13

    dplyr:1つの関数を使用して要約で2つの列を返すことは可能ですか?

  14. 14

    rのdplyrを使用して、さまざまな関数でさまざまな列を要約します

  15. 15

    R(およびdplyr)を使用して、因子情報を含む複数の要約テーブルを作成する

  16. 16

    複数の列を別の列の値で要約します

  17. 17

    1つの行に複数の割り当てを要約する

  18. 18

    pythonpandasデータフレームで複数の列を使用して要約します

  19. 19

    ScopedTypeVariablesを使用してfmap関数の引数を制約する

  20. 20

    Aggregate.data.frame関数を使用してrdata.frame内のデータを要約する

  21. 21

    Python Pandas-両方がgroupby関数を使用して要約されている場合、1つの列のデータを別の列で分割する

  22. 22

    dplyrで複数の列を要約しますか?

  23. 23

    dplyrcross()関数で直感的に名前を設定する

  24. 24

    複数のバッチで要約を平均化する方法は?

  25. 25

    複数のバッチで要約を平均化する方法は?

  26. 26

    複数のバッチで要約を平均化する方法は?

  27. 27

    要約で複数の列を作成する

  28. 28

    複数の列からSASで要約列を作成する

  29. 29

    SQLで複数のフィールドを要約する方法

ホットタグ

アーカイブ