两张桌子上相同的图案[R]

时间:2018-04-10 16:56:54

标签: r dataframe concatenation

我有2个数据框,我需要创建一个

让我解释一下:

我的两个表包含很多行:这是一个例子:

V1   V2         V3          V4    V5     V6   V7
1 A Complete  scaffold_544  98748 122355 4337.2 2808
2 B Complete scaffold_1077  32765  40727 2934.3 1759
3 C Complete    scaffold_2  65354  76523 3248.4 1924
4 D Complete  scaffold_174  33084  44463 1403.8 1171

  V1   V2         V3          V4    V5     V6   V7
1 A Complete  scaffold_544  98748 122355 4337.2 2808
2 E Complete scaffold_1077  32765  40727 2934.3 1759
3 G Complete    scaffold_2  65354  76523 3248.4 1924
4 D Complete  scaffold_174  33084  44463 1403.8 1171

然后我需要比较V1列并创建一个这样的表:

  seq_paired_names   
1 A 
2 D

非常感谢你。

2 个答案:

答案 0 :(得分:1)

如果您想要两个表之间相应行相等的V1值,则可以执行inner_join,如下所示。

library(dplyr)
df1 %>% 
  inner_join(df2) %>% 
  select(seq_paired_names = V1)

如果您只是想知道两个表中V1的值是哪个,可以使用intersect

data.frame(seq_paired_names = intersect(df1$V1, df2$V1))

使用的数据

df1 <- read.table(text = 'V1   V2         V3          V4    V5     V6   V7
1 A Complete  scaffold_544  98748 122355 4337.2 2808
                  2 B Complete scaffold_1077  32765  40727 2934.3 1759
                  3 C Complete    scaffold_2  65354  76523 3248.4 1924
                  4 D Complete  scaffold_174  33084  44463 1403.8 1171'
                  ,head = T
                  ,stringsAsFactors = F)
df2 <- read.table(text = '  V1   V2         V3          V4    V5     V6   V7
1 A Complete  scaffold_544  98748 122355 4337.2 2808
                  2 E Complete scaffold_1077  32765  40727 2934.3 1759
                  3 G Complete    scaffold_2  65354  76523 3248.4 1924
                  4 D Complete  scaffold_174  33084  44463 1403.8 1171'
                  ,head = T
                  ,stringsAsFactors = F)

答案 1 :(得分:1)

简单的基础R解决方案:

data.frame(seq_paired_names = df1$V1[df1$V1 %in% df2$V1])