给出两个数据框:
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风格,加入?也就是说,我该怎么做:
例如(不确定是否最具代表性的例子):
N <- 1e6
d1 <- data.frame(x=sample(N,N), y1=rnorm(N))
d2 <- data.frame(x=sample(N,N), y2=rnorm(N))
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所得到的:
d <- merge(d1,d2)
# 7.6 sec
library(plyr)
d <- join(d1,d2)
# 2.9 sec
library(data.table)
dt1 <- data.table(d1, key="x")
dt2 <- data.table(d2, key="x")
d <- data.frame( dt1[dt2,list(x,y1,y2=dt2$y2)] )
# 4.9 sec
library(sqldf)
sqldf()
sqldf("create index ix1 on d1(x)")
sqldf("create index ix2 on d2(x)")
d <- sqldf("select * from d1 inner join d2 on d1.x=d2.x")
sqldf()
# 17.4 sec
Run Code Online (Sandbox Code Playgroud) 为了提供可重现的方法示例,通常必须提供数据集.我希望使用一些自己的数据,而不是构建示例数据集.但是这些数据无法发布.我希望用无信息的占位符替换变量(列)名称和因子级别(例如,V1 .... V5,L1 ...... L5).
这是一种自动化的方法吗?
理想情况下,这将在R中完成,接收data.frame并生成此匿名data.frame.
使用这样的数据集,只需在脚本中搜索和替换变量名称,就可以获得可公开发布的可重现的示例.
这样的过程可以增加在可重复的示例中包含适当的数据,甚至在问题,评论和错误报告中包含可重现的示例.