【问题标题】:R Two matrices, extract rows from m based on common column of rR 两个矩阵,根据 r 的公共列从 m 中提取行
【发布时间】:2014-06-23 14:59:21
【问题描述】:

我的问题是关于 R 的矩阵。我有两个矩阵 r 和 m:

m <- as.matrix(read.table(text="
15 56 44 1 4 7
61 31 63 7 1 3
10 36 99 5 9 6
65 79 88 54 1 1"))
colnames(m) <- c("Z","Q","A","F","D","H")

r <- as.matrix(read.table(text="
15 56 64   
10 36 61 "))
colnames(r) <- c("Z","L","O")

我想根据公共列(在本例中为 Z 列)提取行,因此结果将是

A

15 56 44 1 4 7

10 36 99 5 9 6

A 是新的矩阵。

有什么想法吗?

【问题讨论】:

  • 你试过merge(m,r)吗?

标签: r matrix extract


【解决方案1】:

只要做:

> merge(x=m, y=r, by='Z')
   Z  Q  A F D H  L  O
1 10 36 99 5 9 6 36 61
2 15 56 44 1 4 7 56 64

只保留m中的列:

> merge(x=r, y=m, by='Z', sort=FALSE)[colnames(m)]
   Z  Q  A F D H
1 15 56 44 1 4 7
2 10 36 99 5 9 6

【讨论】:

  • 非常感谢,我用了第二个。
【解决方案2】:

还有:

 indx <- intersect(colnames(m), colnames(r))
 m[m[,indx] %in% r[,indx],]
 #    Z  Q  A F D H
 #[1,] 15 56 44 1 4 7
 #[2,] 10 36 99 5 9 6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2018-09-25
    • 1970-01-01
    相关资源
    最近更新 更多