2つの変数(dplyr)を配置してカウンター列を追加します

ステファノ

私はあちこちでしばらく探していましたが、私の状況に対する解決策を見つけることができませんでした。IDとVARが混在するデータフレームがあります。以下にサンプルを再現してみました

require(dplyr)
seed(123)
N <- 3
T <- 4
id <- rep(letters[1:N], each = T) 
var <- rep(sample(seq(1:100),T),N) 
row <- sample(seq(1:(N*T)),replace = F)

dt <- data.frame(ID=id,VAR=var,ROW=row) %>%
  arrange(ROW) %>%
  select(-ROW)

そして、私はしたいarrangeIDとVARによるなど何かを得るために、グループごとにカウンタを追加します

   ID VAR COUNTER
1   a   1 1
2   a  11 2
3   a  22 3
4   a  64 4
5   b   1 1
6   b  11 2
7   b  22 3
8   b  64 4
9   c   1 1
10  c  11 2
11  c  22 3
12  c  64 4

可能であれば、dplyrまたはbase関数を使用するだけでこれらすべてを実行できます。

SymbolixAU

中でdplyr、あなたがする必要があるarrange()ことにより、ID及びVAR、その後、group_by()ちょうどID

次に、を使用mutate()して、1から数えて新しい列を追加しますn()(ここで、n()は「行数」のdplyr関数です)

set.seed(123)
dt %>%
    arrange(ID, VAR) %>%
    group_by(ID) %>%
    mutate(COUNTER = 1:n()) %>%  ## as per comment, can use row_number()
    ungroup()

# # A tibble: 12 × 3
#         ID   VAR COUNTER
#     <fctr> <int>   <int>
# 1       a    29       1
# 2       a    41       2
# 3       a    79       3
# 4       a    86       4
# 5       b    29       1
# 6       b    41       2
# 7       b    79       3
# 8       b    86       4
# 9       c    29       1
# 10      c    41       2
# 11      c    79       3
# 12      c    86       4

グループ化解除に関するコメント

これを行うと、に関連付けられているすべての「グループ化」属性が削除されますgrouped_dfこの例では、結果は同じですが、これらのグループ化された属性は、さらに先に進む可能性があります。

dt_grouped <- dt %>%
    arrange(ID, VAR) %>%
    group_by(ID) %>%
    mutate(COUNTER = 1:n()) 

dt_ungrouped <- dt %>%
    arrange(ID, VAR) %>%
    group_by(ID) %>%
    mutate(COUNTER = 1:n()) %>%
    ungroup()

str(dt_grouped)
# Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame':   12 obs. of  3 variables:
#   $ ID     : Factor w/ 3 levels "a","b","c": 1 1 1 1 2 2 2 2 3 3 ...
# $ VAR    : int  29 41 79 86 29 41 79 86 29 41 ...
# $ COUNTER: int  1 2 3 4 1 2 3 4 1 2 ...
# - attr(*, "vars")=List of 1
# ..$ : symbol ID
# - attr(*, "labels")='data.frame': 3 obs. of  1 variable:
#   ..$ ID: Factor w/ 3 levels "a","b","c": 1 2 3
# ..- attr(*, "vars")=List of 1
# .. ..$ : symbol ID
# ..- attr(*, "drop")= logi TRUE
# - attr(*, "indices")=List of 3
# ..$ : int  0 1 2 3
# ..$ : int  4 5 6 7
# ..$ : int  8 9 10 11
# - attr(*, "drop")= logi TRUE
# - attr(*, "group_sizes")= int  4 4 4
# - attr(*, "biggest_group_size")= int 4

str(dt_ungrouped)
# Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 12 obs. of  3 variables:
#   $ ID     : Factor w/ 3 levels "a","b","c": 1 1 1 1 2 2 2 2 3 3 ...
# $ VAR    : int  29 41 79 86 29 41 79 86 29 41 ...
# $ COUNTER: int  1 2 3 4 1 2 3 4 1 2 ...

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

行を繰り返してデータフレームを変換し、2つの変数の値をカウントする変数を作成します

分類Dev

ループカウンターを使用して、2つの変数を使用してパターンを出力します

分類Dev

jqueryidに変数カウンターを追加します

分類Dev

SQL SERVERは、2つの列をマージして結合し、同じ数をカウントします

分類Dev

2つの変数のメンバーシップをピボットしてカウントします

分類Dev

R:2つの列に基づく頻度カウントを使用してデータフレームに列を追加します

分類Dev

2つの変数でグループ化し、文字列値をカウントします

分類Dev

2つのカウンター辞書を追加しようとしています

分類Dev

欠落している変数のカウンターを作成します

分類Dev

dplyrを使用してデータフレームの複数の列で「はい」をカウントする

分類Dev

Pythonパンダ:変数をカウントするデータフレームに列を追加します

分類Dev

カスタム関数への引数として2つの列を使用して複数の列を変更するdplyr

分類Dev

2つのdivを追加し、カウンタークリックで同じカウントを行います

分類Dev

カウンター変数は、関数の2番目のパスで2つの値を保持しています

分類Dev

Pandasを2列でグループ化し、TとFのインスタンスをカウントして2つの新しい列を作成します

分類Dev

各行のリンク数をカウントし、カウントを新しい列として追加します

分類Dev

Pythonpandasデータフレームの追加列としてカウンターを追加します

分類Dev

変数の2つのリストを使用して、scala列を追加します

分類Dev

jQueryカウンターとクラスを追加しますが、最初の2つには追加しませんか?

分類Dev

1つのパラメーターを持つ関数を使用して、配列内の要素の繰り返しをカウントします

分類Dev

列の値が表示される回数をカウントし、それを使用して列をデータフレームに追加します

分類Dev

dplyrを使用して、Rの他の2つの列に基づいて新しい列をカスタム変更します

分類Dev

配列をループし、カウンターを追加してアイテムの詳細を変更します

分類Dev

テーブル内の上位4つの値のカウントを取得し、変数として保存します

分類Dev

カスタム関数を使用して2つの列を作成し、データフレームに追加します-Python 3.x

分類Dev

Pythonループのどこにカウンター変数を配置しますか?

分類Dev

変数(列)に関してデータを配置します

分類Dev

sparklyrのdplyrを使用して、各列の一意の要素の数をカウントします

分類Dev

2つのデータフレームを列Aとマージし、列A_labelのカウントに対して値を均等に分散します

Related 関連記事

  1. 1

    行を繰り返してデータフレームを変換し、2つの変数の値をカウントする変数を作成します

  2. 2

    ループカウンターを使用して、2つの変数を使用してパターンを出力します

  3. 3

    jqueryidに変数カウンターを追加します

  4. 4

    SQL SERVERは、2つの列をマージして結合し、同じ数をカウントします

  5. 5

    2つの変数のメンバーシップをピボットしてカウントします

  6. 6

    R:2つの列に基づく頻度カウントを使用してデータフレームに列を追加します

  7. 7

    2つの変数でグループ化し、文字列値をカウントします

  8. 8

    2つのカウンター辞書を追加しようとしています

  9. 9

    欠落している変数のカウンターを作成します

  10. 10

    dplyrを使用してデータフレームの複数の列で「はい」をカウントする

  11. 11

    Pythonパンダ:変数をカウントするデータフレームに列を追加します

  12. 12

    カスタム関数への引数として2つの列を使用して複数の列を変更するdplyr

  13. 13

    2つのdivを追加し、カウンタークリックで同じカウントを行います

  14. 14

    カウンター変数は、関数の2番目のパスで2つの値を保持しています

  15. 15

    Pandasを2列でグループ化し、TとFのインスタンスをカウントして2つの新しい列を作成します

  16. 16

    各行のリンク数をカウントし、カウントを新しい列として追加します

  17. 17

    Pythonpandasデータフレームの追加列としてカウンターを追加します

  18. 18

    変数の2つのリストを使用して、scala列を追加します

  19. 19

    jQueryカウンターとクラスを追加しますが、最初の2つには追加しませんか?

  20. 20

    1つのパラメーターを持つ関数を使用して、配列内の要素の繰り返しをカウントします

  21. 21

    列の値が表示される回数をカウントし、それを使用して列をデータフレームに追加します

  22. 22

    dplyrを使用して、Rの他の2つの列に基づいて新しい列をカスタム変更します

  23. 23

    配列をループし、カウンターを追加してアイテムの詳細を変更します

  24. 24

    テーブル内の上位4つの値のカウントを取得し、変数として保存します

  25. 25

    カスタム関数を使用して2つの列を作成し、データフレームに追加します-Python 3.x

  26. 26

    Pythonループのどこにカウンター変数を配置しますか?

  27. 27

    変数(列)に関してデータを配置します

  28. 28

    sparklyrのdplyrを使用して、各列の一意の要素の数をカウントします

  29. 29

    2つのデータフレームを列Aとマージし、列A_labelのカウントに対して値を均等に分散します

ホットタグ

アーカイブ