R中的外部联合
我需要在R中的两个表上执行一个并集。但是,该并集需要包含两个父矩阵/表不通用的列 此场景与此处描述的外部联合非常相似: 我有两个矩阵: 矩阵1R中的外部联合,r,matrix,union,R,Matrix,Union,我需要在R中的两个表上执行一个并集。但是,该并集需要包含两个父矩阵/表不通用的列 此场景与此处描述的外部联合非常相似: 我有两个矩阵: 矩阵1 Name Var1 Var2 1 1 0 2 1 0 矩阵2 Name Var1 Var3 3 0 1 4 0 1 我需要将其合并到矩阵3中: Name Var1 Var2 Var3 1 1 0 0 2 1 0 0 3 0 0 1 4 0
Name Var1 Var2
1 1 0
2 1 0
矩阵2
Name Var1 Var3
3 0 1
4 0 1
我需要将其合并到矩阵3中:
Name Var1 Var2 Var3
1 1 0 0
2 1 0 0
3 0 0 1
4 0 0 1
我们可以转换为
data.frame
并使用bind\u rows
。默认情况下,它用NA
library(dplyr)
library(tidyr)
bind_rows(as.data.frame(m1), as.data.frame(m2)) %>%
mutate_all(replace_na, 0) %>%
as.matrix
# Name Var1 Var2 Var3
#[1,] 1 1 0 0
#[2,] 2 1 0 0
#[3,] 3 0 0 1
#[4,] 4 0 0 1
或者正如@markus所提到的rbind.fill.matrix
fromplyr
将非常有用
plyr::rbind.fill.matrix(m1, m2)
数据
m1使用merge
M <- replace(M<-as.matrix(merge(data.frame(M1),data.frame(M2),all = T)),
which(is.na(M)),
0)
数据
M1 <- structure(c(1L, 2L, 1L, 1L, 0L, 0L), .Dim = 2:3, .Dimnames = list(
NULL, c("Name", "Var1", "Var2")))
M2 <- structure(c(3L, 4L, 0L, 0L, 1L, 1L), .Dim = 2:3, .Dimnames = list(
NULL, c("Name", "Var1", "Var3")))
M1
> M
Name Var1 Var2 Var3
[1,] 1 1 0 0
[2,] 2 1 0 0
[3,] 3 0 0 1
[4,] 4 0 0 1
M1 <- structure(c(1L, 2L, 1L, 1L, 0L, 0L), .Dim = 2:3, .Dimnames = list(
NULL, c("Name", "Var1", "Var2")))
M2 <- structure(c(3L, 4L, 0L, 0L, 1L, 1L), .Dim = 2:3, .Dimnames = list(
NULL, c("Name", "Var1", "Var3")))