这是关于data.table连接语法的一个哲学问题.我发现data.tables的用途越来越多,但仍在学习......
X[Y]data.tables 的连接格式非常简洁,方便和高效,但据我所知,它只支持内连接和右外连接.要获得左外部或全外部连接,我需要使用merge:
X[Y, nomatch = NA] - Y中的所有行 - 右外连接(默认)X[Y, nomatch = 0] - 只有在X和Y中都匹配的行 - 内连接merge(X, Y, all = TRUE) - 来自X和Y的所有行 - 完全外部连接merge(X, Y, all.x = TRUE) - X中的所有行 - 左外连接在我看来,如果X[Y]连接格式支持所有4种类型的连接,那将会很方便.有没有理由只支持两种类型的连接?
对我来说,nomatch = 0和nomatch = NA参数值对于正在执行的操作不是非常直观.这是我更容易理解和记忆的merge语法:all = TRUE,all.x = TRUE和all.y = TRUE.由于X[Y]操作类似于merge远远不止match,为什么不使用merge的连接,而不是语法match功能的nomatch参数?
以下是4种连接类型的代码示例:
# …Run Code Online (Sandbox Code Playgroud)