Объединение двух векторов в фрейм данных по индексу - PullRequest
0 голосов
/ 30 марта 2020

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

    vec=c(-2,-5)
    vec2=c(11,17)
    y1=as.data.frame(cbind(0:(length(c(vec))-1)*2+1,c(vec)))

      V1 V2
    1  1 -2
    2  3 -5

    y2=as.data.frame(cbind(0:(length(c(m$coefficients))-1)*2+2,c(vec2)))

       V1 V2
    1  2 11
    2  4 15

    x=as.data.frame(1:4,names="V1"); names(x)="V1"

      V1
    1  1
    2  2
    3  3
    4  4

Мне нужен кадр данных, похожий на этот

      V1  V2
    1  1  -2
    2  2  11
    3  3  -5
    4  4  17

Пока я смог выполнить первое слияние

c1=merge(x, y1, all.x=TRUE)

  V1 V2
1  1 -2
2  2 NA
3  3 -5
4  4 NA

Но не может сделать второе с

c2=merge(c1, y2, all.x=TRUE)

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Вы можете rbind y1 и y2, а затем merge с x.

merge(x, rbind(y1, y2), by = 'V1')

#  V1 V2
#1  1 -2
#2  2 11
#3  3 -5
#4  4 15

Та же логика c с использованием dplyr:

library(dplyr)
bind_rows(y1, y2) %>% inner_join(x, by =  'V1')
0 голосов
/ 30 марта 2020

Другой вариант - rbindlist из data.table

library(data.table)
rbindlist(list(y1, y2)[x, on = .(V1)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...