1
I Rのdata.tableに次がありますので、R data.tableグループどこ
id | status
=============
1 | A
1 | B
2 | A
2 | B
3 | A
4 | A
5 | B
私がAを持っているIDでグループ化された行のみを表示したいではなく、Bを私を取得
dt[, sum(status == "A") > 0 && sum(status == "B") == 0, by = id]
:
これまでのところ、私はこれを持ってid | status
=============
3 | A
4 | A
:結果はこのようなものになるだろう
id | status
=============
1 | FALSE
2 | FALSE
3 | TRUE
4 | TRUE
5 | FALSE
私は正しい軌道にいると思いますが、私は自分が望む行をどうやって得るのか分かりません。私は正しい道を歩いているのですか、それとも間違った方法を考えていますか?この中
を持っているIDが含まれます保証する、自己半がhttpsに参加する必要があるかもしれません:// stackoverflowのdt [dt [status == "A"、。(id)]、on = "id"] 'のようなデータテーブルを持つ.com/questions/18969420/perform-a-semi-joinテーブル。 – Frank
@Frankは、 'B'値も持つ' A'IDを除外しませんか? – SymbolixAU
はい、私は 'dt [...] [...]'チェーンの最初の部分を意味していました。だから 'DT = data.table(id = 1、status = LETTERS [c(1,3)])' 'では、最初の行だけでなく、' id'のすべての行を見たいので、 'DT on = "id"] [!(DT [status == "B"、unique(id)])、on = "id" ] = not "DT [status ==" A "] [!(DT [status ==" B "、unique(id)])、on =" id "]' – Frank