Сравните два фрейма данных и сохраните столбцы, соответствующие определенной строке - PullRequest
0 голосов
/ 07 января 2019

У меня есть два фрейма данных, в которых есть строки, которые являются уникальными ключами и присутствуют в обоих наборах данных. Я хочу сохранить только те столбцы в обоих, где определенное значение строки соответствует.

Для данных ниже Data_1 имеет первую строку как 1, 2, 3, 4, однако Data_2 имеет только 1, 2, 3. Я хочу сравнить или подмножество таким образом, чтобы Data_1 имел первую строку только как 1, 2, 3, так как эти ключи присутствуют только в обоих фреймах данных.

Цель состоит не в слиянии, а в подмножестве, основанном на сравнении двух разных фреймов данных.

Любые предложения о том, как это сделать?

Данные_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)

Данные_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 на основе значений строки 2

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

1 Ответ

0 голосов
/ 07 января 2019

Ваш вопрос несколько неясен. Однако, если вы просто пытаетесь установить подмножество data_1 на основе одной строки из data_2, приведенный ниже код будет работать. Другими словами, приведенный ниже код создает желаемый «выходной» фрейм данных.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...