Объединение таблиц A и B с использованием только столбцов из таблицы A в R - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть 2 кадра данных A и B, где столбцы в A являются подмножеством столбцов в B, как показано ниже

Таблица A:

[A] [B] [C]
 1   2   3
 4   5   6

Таблица B:

[A] [B] [C] [D]
 7   8   9  10
11  12  13  14

Я хочу получить вывод, подобный этому:

[A] [B] [C]
 1   2   3
 4   5   6
 7   8   9
11  12  13

Какой код / ​​функцию я должен использовать, чтобы напрямую получить такой результат?

Я пытался rbind.fill, но я получил все отличные столбцы от A и B, которые я могу отбросить некоторые из них позже. Однако мои фактические данные содержат так много столбцов, что было бы неоптимально просто набрать все ненужные столбцы.

Если действительно неразумно пытаться получить желаемый результат за один раз, приветствуются другие быстрые обходные пути = D. Спасибо.

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Мы можем найти столбцы в B, которые присутствуют в A, а затем rbind в этих столбцах.

cols <- names(B)[names(B) %in% names(A)] 
rbind(A, B[cols])

#   A  B  C
#1  1  2  3
#2  4  5  6
#3  7  8  9
#4 11 12 13

Если и A, и B могут иметь разные столбцы,мы можем использовать intersect, чтобы найти общие столбцы

cols <- intersect(names(B), names(A))
rbind(A[cols], B[cols])

данные

A <- structure(list(A = c(1L, 4L), B = c(2L, 5L), C = c(3L, 6L)), class 
= "data.frame", row.names = c(NA, 
-2L))
B <- structure(list(A = c(7L, 11L), B = c(8L, 12L), C = c(9L, 13L), 
D = c(10L, 14L)), class = "data.frame", row.names = c(NA, 
-2L))
0 голосов
/ 02 апреля 2019

Если вы используете tidyverse , вы можете сделать:

library(tidyverse)

bind_rows(a, b[names(a)])

Или

bind_rows(a, b %>% select(names(a))

Генерация данных

a <- tribble(
    ~A, ~B, ~C,
    1, 2, 3,
    4, 5, 6,
)

b <- tribble(
    ~A, ~B, ~C, ~D,
    7,8,9,10,
    11,12,13,14
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...