Data.Table R 中没有键的完全外部连接
Data.Table Full Outer Join in R without key
我有一个数据集如下:
dt1 =
customerid
value
1356
0.26
1298
0.38
dt2 =
project_yr
value
1
0.31
2
0.79
我想合并/加入它们以获得以下输出:
customerid
value
project_yr
value
1356
0.26
1
0.31
1356
0.26
2
0.79
1298
0.38
1
0.31
1298
0.38
2
0.79
最快的方法是复制df1(类似于这个Repeat rows of a data.frame)然后合并第二个吗?
或者有没有办法使用 data.table 合并功能来做到这一点?
谢谢!
dt1 <- tibble::tribble(
~customerid, ~value,
1356L, 0.26,
1298L, 0.38
)
dt2 <- tibble::tribble(
~project_yr, ~value,
1L, 0.31,
2L, 0.79
)
tidyr::expand_grid(dt1, dt2, .name_repair = "minimal")
#> # A tibble: 4 x 4
#> customerid value project_yr value
#> <int> <dbl> <int> <dbl>
#> 1 1356 0.26 1 0.31
#> 2 1356 0.26 2 0.79
#> 3 1298 0.38 1 0.31
#> 4 1298 0.38 2 0.79
您要查找的是交叉连接
setkey(dt1[,c(k=1,.SD)],k) [ dt2[,c(k=1,.SD)], allow.cartesian=TRUE ][,k:=NULL]
我有一个数据集如下: dt1 =
customerid | value |
---|---|
1356 | 0.26 |
1298 | 0.38 |
dt2 =
project_yr | value |
---|---|
1 | 0.31 |
2 | 0.79 |
我想合并/加入它们以获得以下输出:
customerid | value | project_yr | value |
---|---|---|---|
1356 | 0.26 | 1 | 0.31 |
1356 | 0.26 | 2 | 0.79 |
1298 | 0.38 | 1 | 0.31 |
1298 | 0.38 | 2 | 0.79 |
最快的方法是复制df1(类似于这个Repeat rows of a data.frame)然后合并第二个吗?
或者有没有办法使用 data.table 合并功能来做到这一点?
谢谢!
dt1 <- tibble::tribble(
~customerid, ~value,
1356L, 0.26,
1298L, 0.38
)
dt2 <- tibble::tribble(
~project_yr, ~value,
1L, 0.31,
2L, 0.79
)
tidyr::expand_grid(dt1, dt2, .name_repair = "minimal")
#> # A tibble: 4 x 4
#> customerid value project_yr value
#> <int> <dbl> <int> <dbl>
#> 1 1356 0.26 1 0.31
#> 2 1356 0.26 2 0.79
#> 3 1298 0.38 1 0.31
#> 4 1298 0.38 2 0.79
您要查找的是交叉连接
setkey(dt1[,c(k=1,.SD)],k) [ dt2[,c(k=1,.SD)], allow.cartesian=TRUE ][,k:=NULL]