1. ホーム
  2. r

[解決済み] R data.tableで、複数の列で一意な値や異なる値をカウントするためにuniqueN()を使用するにはどうすればよいですか?[重複している]。

2022-02-17 14:39:59

質問

例えば、次のようなRがあるとします。 data.table (ただし dataframe も原理的には問題ありません)。

library(data.table)
new_dt = as.data.table(readcsv(...))
head(new_dt)
    name order_no  overlimit
1    Amy       32  TRUE
2   Jack       14  TRUE
3   Jack       16  TRUE
4   Dave       11  FALSE
5    Amy       22  TRUE
6   Jack       16  TRUE
7    Tom       19  FALSE
8  Larry       22  FALSE
9    Tom       89  FALSE
10  Dave       81  TRUE
11  Jack       67  TRUE
12   Tom       60  TRUE
13   Amy       23  FALSE
14  Jack       16  TRUE

このタスクでは order_no のユニークな行数をカウントしたいのです。 nameoverlimit :

name    overlimit  distinct_groups
Amy     TRUE       2
Amy     FALSE      1
Jack    TRUE       4
Jack    FALSE      0
Dave    TRUE       1
Dave    FALSE      1
...

のカラムを増やすだけでよいのでしょうか? by という引数があります。

解決方法は?

質問の答えとしては、はい、両方のカラムを by 引数で指定します。

dt[, .(distinct_groups = uniqueN(order_no)), by = c("Name", "Overlimit")]