比较两个数据框并保留与特定行匹配的列

时间:2019-01-07 17:26:03

标签: r dataframe

我有两个具有一行的数据帧,它们是唯一键,并且都存在于两个数据集中。我只想在特定行值匹配的两个列中都保留这些列。

对于以下数据,Data_1的第一行为1234,但是Data_2仅具有{{1 }},12。我想要比较或子集,使得3仅具有第Data_112行,因为这些键仅在两个数据帧中都存在。

目标不是合并,而是基于两个不同数据帧的比较的子集。

关于如何完成此操作的任何建议?

数据_1

3

数据_2

read.table(text = "A    B    C    D
       1    2    3    4
       1.1  1.2  1.3  1.4
       1.1  1.2  1.3  1.4
       1.1  1.2  1.3  1.4
       1.1  1.2  1.3  1.4
       1.1  1.2  1.3  1.4", header = T)

输出

根据第2行的值,只有read.table(text = "A1 B1 C1 1 2 3 1.0 2.2 4.3 1.0 2.2 4.3 1.0 2.2 4.3 1.0 2.2 4.3 1.0 2.2 4.3 ", header = T) 会发生变化,因为它有另外一行不在Data_1

Data_2

1 个答案:

答案 0 :(得分:1)

您的问题尚不清楚。但是,如果您只是尝试基于data_2的一行对data_1进行子集设置,则下面的代码将起作用。换句话说,下面的代码将产生所需的“输出”数据帧。

data_1 <- read.table(text = "A    B    C    D
                             1    2    3    4
                             1.1  1.2  1.3  1.4
                             1.1  1.2  1.3  1.4
                             1.1  1.2  1.3  1.4
                             1.1  1.2  1.3  1.4
                             1.1  1.2  1.3  1.4", header = T)

data_2 <- read.table(text = "A1    B1    C1  
                             1    2    3   
                             1.0  2.2  4.3 
                             1.0  2.2  4.3 
                             1.0  2.2  4.3 
                             1.0  2.2  4.3 
                             1.0  2.2  4.3 ", header = T)

output <- data_1[data_1[1,] %in% data_2[1,]]

    A   B   C
1 1.0 2.0 3.0
2 1.1 1.2 1.3
3 1.1 1.2 1.3
4 1.1 1.2 1.3
5 1.1 1.2 1.3
6 1.1 1.2 1.3