【发布时间】:2020-04-01 14:35:05
【问题描述】:
对于 3d 数组是否有某种等价的 inner_join,可以将 2d 结构连接到 3d 结构吗?
让我们看看这是否有意义:
我有一个 3d 整数数组(微生物组计数数据)。
- 维度 1:复制 1:100
- 维度 2:样本
- 维度 3:分类群
我有一个二维元数据表。
- 维度 1:样本
- 维度 2:元数据类型(稀释、采样日期等)
二维元数据表(样本名称)中有一列与数组中第二维的标签匹配。
我能否以某种方式加入这两者,以便保留数组结构并为每个样本添加元数据?
我是否必须将阵列熔化/堆叠成超长的二维表?
感谢您的帮助!
-编辑
假设我使用以下代码生成了一个数组 a 和“a”表“b”:
a <- array(1:10,c(2,4,3))
b <- data.frame("thing" = c("stuff", "foo", "dodad"), "data" = c(10,20,30), "match" = c("first","second","third"))
dimnames(a) <- list(c("A", "B"), c("one", "two", "three", "four"), c("first", "second", "third"))
如您所见,我在表“b”中有一个“匹配”列,我想将其加入/匹配到维度名称 a[[3]]。
如果我们看一下“a”和“b”
> a
, , first
one two three four
A 1 3 5 7
B 2 4 6 8
, , second
one two three four
A 9 1 3 5
B 10 2 4 6
, , third
one two three four
A 7 9 1 3
B 8 10 2 4
> b
thing data match
1 stuff 10 first
2 foo 20 second
3 dodad 30 third
例如,我想要数组
, , third
one two three four
A 7 9 1 3
B 8 10 2 4
让元素“dodad”和“30”与标签“thing”和“data”相关联。
对于真实数据集,我希望使用“患者姓名”而不是“事物”和“稀释”而不是“数据”,并使用这些元素作为从数组中提取切片以运行统计的手段分析。
【问题讨论】:
-
我不知道有一个常见的多维类比
join/merge。您能否提供 small 样本数据(可能是 4x3x2 与 4x3 连接)和预期输出?我建议您使用array或matrix以编程方式构建数据,或者使用dput转储数据。谢谢。 -
谢谢,我进行了编辑。见上文
-
好的开始,预期的输出呢?
-
谢谢,见上文
标签: r arrays inner-join metadata