次のような 2 つの data.table dt と dt1 があります。
> dt <- data.table(grp = c("A", "A", "B", "B", "C"),
cat = c("01", "02", "01", "02", "01"),
Value = c(234, 234, 235, 536, 235))
> dt
grp cat Value
1: A 01 234
2: A 02 234
3: B 01 235
4: B 02 536
5: C 01 235
> dt1 <- data.table(grp = c("A","A","A","A","A","A","B","B","B", "B","C"),
cat = c("01","01","02","02","03","04", "01","01", "02", "03","01"),
rec = c(5435,4341, 32525,436,7087,467,523,245,568,24,789),
val = c(346,6876,436,6807,465,65875,6432,754,326532,746,578))
> dt1
grp cat rec val
1: A 01 5435 346
2: A 01 4341 6876
3: A 02 32525 436
4: A 02 436 6807
5: A 03 7087 465
6: A 04 467 65875
7: B 01 523 6432
8: B 01 245 754
9: B 02 568 326532
10: B 03 24 746
11: C 01 789 578
私は、テーブルからレコードを削除したいdt1
私は、対応する持っていないcat
とgrp
中をdt
。
たとえば、grp
A の場合cat
、dt の 03 と 04 に関連付けられたレコードはありません。そのため、dt1 でそれらを削除します。
私の最終的なテーブルdt1
は次のようでなければなりません
> dt1
grp cat rec val
1: A 01 5435 346
2: A 01 4341 6876
3: A 02 32525 436
4: A 02 436 6807
5: B 01 523 6432
6: B 01 245 754
7: B 02 568 326532
8: C 01 789 578
Rのdata.tableでこれを行うにはどうすればよいですか
我々はできる
dt1[dt[, -3], on = .(grp, cat)]
# grp cat rec val
#1: A 01 5435 346
#2: A 01 4341 6876
#3: A 02 32525 436
#4: A 02 436 6807
#5: B 01 523 6432
#6: B 01 245 754
#7: B 02 568 326532
#8: C 01 789 578
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加