R data.table检查另一个data.table中是否存在行

时间:2018-01-19 18:29:40

标签: r data.table

我有两个data.table是这样的:

tests

id | test | score
=================
 1 |    1 |    90
 1 |    2 |   100
 2 |    1 |    70
 2 |    2 |    80
 3 |    1 |   100
 3 |    2 |    95

cheaters

id | test | score
=================
 1 |    2 |   100
 3 |    1 |   100
 3 |    2 |    95

假设我现在想在all_scores中包含一个布尔列来判断该特定测试是否被欺骗,因此输出将如下:

tests

id | test | score | cheat
=========================
 1 |    1 |    90 | FALSE
 1 |    2 |   100 |  TRUE
 2 |    1 |    70 | FALSE
 2 |    2 |    80 | FALSE
 3 |    1 |   100 |  TRUE
 3 |    2 |    95 |  TRUE

有一种简单的方法吗?这些表格是idtest

的关键字

1 个答案:

答案 0 :(得分:7)

创建初始值为cheat的{​​{1}}列,然后加入作弊者,并在匹配时将FALSE列更新为cheat

TRUE

或者,如果不设置密钥,请使用library(data.table) setkey(setDT(tests), id, test) setkey(setDT(cheaters), id, test) tests[, cheat := FALSE][cheaters, cheat := TRUE] tests # id test score cheat #1: 1 1 90 FALSE #2: 1 2 100 TRUE #3: 2 1 70 FALSE #4: 2 2 80 FALSE #5: 3 1 100 TRUE #6: 3 2 95 TRUE 参数指定要加入的列:

on