グループごとに、2つの列に基づいて一意の行の数を数えます

user3664020

私はrにdata.tableを持っています

    col1 col2 col3   col4
 1:  5.1  3.5  1.4 setosa
 2:  5.1  3.5  1.4 setosa
 3:  4.7  3.2  1.3 setosa
 4:  4.6  3.1  1.5 setosa
 5:  5.0  3.6  1.4 setosa
 6:  5.1  3.5  3.4    eer
 7:  5.1  3.5  3.4    eer
 8:  5.1  3.2  1.3    eer
 9:  5.1  3.5  1.5    eer
10:  5.1  3.5  1.4    eer


DT <- structure(list(col1 = c(5.1, 5.1, 4.7, 4.6, 5, 5.1, 5.1, 5.1, 
5.1, 5.1), col2 = c(3.5, 3.5, 3.2, 3.1, 3.6, 3.5, 3.5, 3.2, 3.5, 
3.5), col3 = c(1.4, 1.4, 1.3, 1.5, 1.4, 3.4, 3.4, 1.3, 1.5, 1.4
), col4 = structure(c(1L, 1L, 1L, 1L, 1L, 4L, 4L, 4L, 4L, 4L), .Label = c("setosa", 
"versicolor", "virginica", "eer"), class = "factor")), .Names = c("col1", 
"col2", "col3", "col4"), row.names = c(NA, -10L), class = c("data.table", 
"data.frame"))

値ごとcol1、の一意の(異なる)組み合わせを数えたいcol2col4

期待される出力は

   col1 col2 col3   col4 count
 1:  5.1  3.5  1.4 setosa     4
 2:  5.1  3.5  1.4 setosa     4
 3:  4.7  3.2  1.3 setosa     4
 4:  4.6  3.1  1.5 setosa     4
 5:  5.0  3.6  1.4 setosa     4
 6:  5.1  3.5  3.4    eer     2
 7:  5.1  3.5  3.4    eer     2
 8:  5.1  3.2  1.3    eer     2
 9:  5.1  3.5  1.5    eer     2
10:  5.1  3.5  1.4    eer     2

1つのdata.table構文でのみこれを行うにはどうすればよいですか?

マットダウル

私は最初にいくつかの試みをしなければならなかった、そしてこれで終わった。何かいい?

DT[, count:=nrow(unique(.SD)), by=col4, .SDcols=c("col1","col2")]
DT
    col1 col2 col3   col4 count
 1:  5.1  3.5  1.4 setosa     4
 2:  5.1  3.5  1.4 setosa     4
 3:  4.7  3.2  1.3 setosa     4
 4:  4.6  3.1  1.5 setosa     4
 5:  5.0  3.6  1.4 setosa     4
 6:  5.1  3.5  3.4    eer     2
 7:  5.1  3.5  3.4    eer     2
 8:  5.1  3.2  1.3    eer     2
 9:  5.1  3.5  1.5    eer     2
10:  5.1  3.5  1.4    eer     2
> 

以下のProcrastinatusコメントのおかげで、同じですがより高速です:

DT[, count:=uniqueN(.SD), by=col4, .SDcols=c("col1","col2")]

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

いくつかの異なる(サブ)グループ(列)に基づいて、1つの列の一意の文字要素の数を数えます

分類Dev

Pigの1つの列の一意の値ごとの数に基づいて列を作成します

分類Dev

最小グループ数で列に基づいて一意の行を選択します

分類Dev

2つの基準条件に基づいて、一意のIDごとに異なる値の複数のCOUNTフィールドを返します

分類Dev

スプレッドシートの2つの列に基づいて一意の値の数を数えます

分類Dev

Rの一意のIDごとに複数の値を持つ列に基づいてフラグを作成します

分類Dev

変数の基準と一意の識別子に基づいて、1つの列のスタックデータを行に転置します

分類Dev

一意の/個別の値の数に基づいてグループを選択します

分類Dev

dplyr:グループ変数は、一意のグループ化に基づいて一意の名前を割り当てます

分類Dev

data.frameの論理ベクトルに基づいて行ごとに一意のグループを作成します

分類Dev

bashの2つの列に基づいて一意の値の数を数える

分類Dev

パンダのグループごとに2列で一意のレコードを数える方法は?

分類Dev

グループごとに一意の値の数を数える方法は?

分類Dev

グループごとに一意の値の数を数える

分類Dev

2つの一意の列値に基づいてクラスターを作成する関数pandas

分類Dev

別の列の変数のグループに基づいて行ごとの平均を作成する

分類Dev

Excelの条件に基づいて文字列の一意の数を数えます

分類Dev

Rヘルプ:グループごとに一意の値を数える

分類Dev

2つの列に基づいて一意の行を選択する

分類Dev

複数の基準に基づいて、グループごとに1行を選択します

分類Dev

別のテーブルのデータに基づいて、クライアントIDごとに、行ごと、一意でない列ごとに上位1つのみを取得します

分類Dev

2つの列に基づいて一意のIDを割り当てます

分類Dev

2列のグループ一意IDに基づいてシリアル番号を作成する

分類Dev

要素の一意性と他の1つの条件に基づいてnp配列行を削除します

分類Dev

グループごとに特定の列の特定の行の値に基づいて新しい変数を作成します

分類Dev

パンダ:特定の部分文字列に一致する1つの行を除いて、マルチレベルの列に基づいて最も内側の列をグループごとに並べ替えます

分類Dev

一意の値に基づいて2列のデータフレームを並べ替えます

分類Dev

R:1列の係数に基づいて、2行ごとのデータを1行に再形成します

分類Dev

rの2つの変数に基づいて単一の列をグループ化する方法

Related 関連記事

  1. 1

    いくつかの異なる(サブ)グループ(列)に基づいて、1つの列の一意の文字要素の数を数えます

  2. 2

    Pigの1つの列の一意の値ごとの数に基づいて列を作成します

  3. 3

    最小グループ数で列に基づいて一意の行を選択します

  4. 4

    2つの基準条件に基づいて、一意のIDごとに異なる値の複数のCOUNTフィールドを返します

  5. 5

    スプレッドシートの2つの列に基づいて一意の値の数を数えます

  6. 6

    Rの一意のIDごとに複数の値を持つ列に基づいてフラグを作成します

  7. 7

    変数の基準と一意の識別子に基づいて、1つの列のスタックデータを行に転置します

  8. 8

    一意の/個別の値の数に基づいてグループを選択します

  9. 9

    dplyr:グループ変数は、一意のグループ化に基づいて一意の名前を割り当てます

  10. 10

    data.frameの論理ベクトルに基づいて行ごとに一意のグループを作成します

  11. 11

    bashの2つの列に基づいて一意の値の数を数える

  12. 12

    パンダのグループごとに2列で一意のレコードを数える方法は?

  13. 13

    グループごとに一意の値の数を数える方法は?

  14. 14

    グループごとに一意の値の数を数える

  15. 15

    2つの一意の列値に基づいてクラスターを作成する関数pandas

  16. 16

    別の列の変数のグループに基づいて行ごとの平均を作成する

  17. 17

    Excelの条件に基づいて文字列の一意の数を数えます

  18. 18

    Rヘルプ:グループごとに一意の値を数える

  19. 19

    2つの列に基づいて一意の行を選択する

  20. 20

    複数の基準に基づいて、グループごとに1行を選択します

  21. 21

    別のテーブルのデータに基づいて、クライアントIDごとに、行ごと、一意でない列ごとに上位1つのみを取得します

  22. 22

    2つの列に基づいて一意のIDを割り当てます

  23. 23

    2列のグループ一意IDに基づいてシリアル番号を作成する

  24. 24

    要素の一意性と他の1つの条件に基づいてnp配列行を削除します

  25. 25

    グループごとに特定の列の特定の行の値に基づいて新しい変数を作成します

  26. 26

    パンダ:特定の部分文字列に一致する1つの行を除いて、マルチレベルの列に基づいて最も内側の列をグループごとに並べ替えます

  27. 27

    一意の値に基づいて2列のデータフレームを並べ替えます

  28. 28

    R:1列の係数に基づいて、2行ごとのデータを1行に再形成します

  29. 29

    rの2つの変数に基づいて単一の列をグループ化する方法

ホットタグ

アーカイブ