объединить соответствующие столбцы в data.frame или data.table

У меня есть следующие data.frames:

a <- data.frame(id = 1:3, v1 = c('a', NA, NA), v2 = c(NA, 'b', 'c'))
b <- data.frame(id = 1:3, v1 = c(NA, 'B', 'C'), v2 = c("A", NA, NA))
> a
  id   v1   v2
1  1    a <NA>
2  2 <NA>    b
3  3 <NA>    c
> b
  id   v1   v2
1  1 <NA>    A
2  2    B <NA>
3  3    C <NA>

примечание: Нет идентификаторов, для которых v1 или v2 определены в обеих таблицах; в каждом столбце для каждого значения идентификатора есть только одно уникальное значение, отличное от NA

. Я хотел бы объединить эти кадры данных с соответствующими значениями «id»:

ab <- merge(a, b, by = "id")

, но я также хотел бы объединить два столбца v1и v2, так что data.frame abбудет выглядеть так:

ab <- data.frame(id = 1:3, v1 = c("a", "B", "C"), v2 = c("A", "b", "c"))

> ab
  id v1 v2
1  1  a  A
2  2  B  b
3  3  C  c

вместо этого я получаю это:

> merge(a, b, by = "id")
  id v1.x v2.x v1.y v2.y
1  1    a <NA> <NA>    A
2  2 <NA>    b    B <NA>
3  3 <NA>    c    C <NA>

было бы полезно есть примеры, использующие как data.frame, так и data.table, так что вот версии data.table выше:

A <- data.table(a, key = 'id')
B <- data.table(b, key = 'id')
A[B]
8
задан David LeBauer 29 March 2012 в 03:30
поделиться