给出两个数据框:
df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)))
df2 = data.frame(CustomerId = c(2, 4, 6), State = c(rep("Alabama", 2), rep("Ohio", 1)))
df1
# CustomerId Product
# 1 Toaster
# 2 Toaster
# 3 Toaster
# 4 Radio
# 5 Radio
# 6 Radio
df2
# CustomerId State
# 2 Alabama
# 4 Alabama
# 6 Ohio
Run Code Online (Sandbox Code Playgroud)
我怎样才能做数据库风格,即sql风格,加入?也就是说,我该怎么做:
这是关于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)