我有这些不同维度的矩阵.key.related.sheet所有矩阵中的列都有一些常见值和一些唯一值.我想匹配这些常见的行并合并所有三个矩阵,但我也想包含唯一的行.结果列应该只有key.related.sheet,Sample_B和trace_1,trace_2和trace_3列.有人可以帮我这个吗?
aa<-structure(c("S05-F13-P01:S05-F13-P01", "S05-F13-P01:S08-F10-P01",
"S05-F13-P01:S08-F11-P01", "S05-F13-P01:S09-F66-P01", "S05-F13-P01",
"S08-F10-P01", "S08-F11-P01", "S09-F66-P01", "1.25", "0.227",
"-0.183", "-0.217"), .Dim = c(4L, 3L), .Dimnames = list(NULL,
c("key.related.sheet", "sample_B", "trace_1")))
bb<-structure(c("S05-F13-P01:S08-F10-P01", "S05-F13-P01:S08-F11-P01",
"S05-F13-P01:S09-F66-P01", "S05-F13-P01:S09-F67-P01", "S08-F10-P01",
"S08-F11-P01", "S09-F66-P01", "S09-F67-P01", "0.227", "-0.183",
"-0.217", "0.292", "Unknown", "Unknown", "Unknown", "Unknown"
), .Dim = c(4L, 4L), .Dimnames = list(NULL, c("key.related.sheet",
"sample_B", "trace_2", "type")))
cc<-structure(c("S05-F13-P01:S08-F11-P01", "S05-F13-P01:S09-F66-P01",
"S05-F13-P01:S09-F67-P01", "S05-F13-P01:S09-F68-P01", "S05-F13-P01:S09-F01-P01",
"S08-F11-P01", "S09-F66-P01", "S09-F67-P01", "S09-F68-P01", "S09-F01-P01",
"-0.183", "-0.217", "0.292", "-0.314", "0.0418"), .Dim = c(5L,
3L), .Dimnames = list(NULL, c("key.related.sheet", "sample_B",
"trace_3")))
Run Code Online (Sandbox Code Playgroud)
预期的产出是:
key.related.sheet sample_B trace_1 trace_2 trace_3
"S05-F13-P01:S05-F13-P01" "S05-F13-P01" "1.25"
"S05-F13-P01:S08-F10-P01" "S08-F10-P01" "0.227" "0.227"
"S05-F13-P01:S08-F11-P01" "S08-F11-P01" "-0.183" "-0.183" "-0.183"
"S05-F13-P01:S09-F66-P01" "S09-F66-P01" "-0.217" "-0.217" "-0.217"
"S05-F13-P01:S09-F67-P01" "S09-F67-P01" "0.292" "0.292"
"S05-F13-P01:S09-F68-P01" "S09-F68-P01" "-0.314"
"S05-F13-P01:S09-F01-P01" "S09-F01-P01" "0.0418"
Run Code Online (Sandbox Code Playgroud)
这可以通过组合来完成Reduce,并merge如下:
Reduce(function(x, y) merge(x, y, all=TRUE), list(aa, bb[,-4], cc))
Run Code Online (Sandbox Code Playgroud)
结果:
key.related.sheet sample_B trace_1 trace_2 trace_3
1 S05-F13-P01:S05-F13-P01 S05-F13-P01 1.25 <NA> <NA>
2 S05-F13-P01:S08-F10-P01 S08-F10-P01 0.227 0.227 <NA>
3 S05-F13-P01:S08-F11-P01 S08-F11-P01 -0.183 -0.183 -0.183
4 S05-F13-P01:S09-F66-P01 S09-F66-P01 -0.217 -0.217 -0.217
5 S05-F13-P01:S09-F67-P01 S09-F67-P01 <NA> 0.292 0.292
6 S05-F13-P01:S09-F01-P01 S09-F01-P01 <NA> <NA> 0.0418
7 S05-F13-P01:S09-F68-P01 S09-F68-P01 <NA> <NA> -0.314
Run Code Online (Sandbox Code Playgroud)
尤其是当你有超过三个矩阵/ dataframes,采用merge与Reduce尺度更好,然后嵌套合并.