首页 > 解决方案 > 根据r中其他行中的相同名称选择行矩阵

问题描述

我有一个矩阵,我想首先选择基于行的列的一部分,如下例所示:

原始矩阵:

x1     x2     x3     x4     x5
a       a     15     16      0  
b       j     12     10      8
c       h     14     0       0
d       b     28     41      0
        d     13     60      9
        c     12     78      98

我想得到的矩阵:

x1     x2     x3     x4     x5
a       a     15     16      0  
b       b     28     41      0
c       c     12     78      98
d       d     13     60      9
        
        

标签: rduplicatesintersect

解决方案


考虑到您有一个数据框并且空单元格是NA,您可以执行以下操作:

library(tidyverse)
df <- data.frame(x1 = c("a",'b','c','d',NA,NA),
              x2 = c("a",'j','h','b','d','c'),
              x3 = c(15,12,14,28,13,12),
              x4 = c(16,10,0,41,60,78),
              x5 = c(0,8,0,0,9,98))


df <- full_join(df %>% 
                  filter(!is.na(x1)) %>% 
                  select(x1),
                df %>% 
                  filter(x2 %in% x1) %>% 
                  select(-x1),
                by = c("x1" = "x2")) %>% 
  mutate(x2 = x1) %>% 
  relocate(x1, x2)

输出:

  x1 x2 x3 x4 x5
1  a  a 15 16  0
2  b  b 28 41  0
3  c  c 12 78 98
4  d  d 13 60  9

推荐阅读