Проблема с заявлением о слиянии - PullRequest
0 голосов
/ 25 апреля 2018

Кажется, мое слияние больше не работает, и я не знаю, почему. Ниже приведен код и пример двух наборов данных, которые я объединяю

head(lookup.table)

   code label
1:  I-2     1
2:  I-3     2
3:  I-4     3
4:  I-5     4
5:  I-6     5
6:  I-7     6  

df 
           Rate
1            S-4
2            S-4
3            S-4
4            S-1
5            S-2
6            S-4

Код для воспроизведения примера

library(data.table)

letter=c('I','S','P','D')
start=c(2,1,1,1)
end=c(7,4,3,2)
label=1:15
code.table = data.table(letter,start,end)
code.vector = unlist(apply(code.table,1,function(x) paste(x[1],x[2]:x[3],sep='-')))
lookup.table = data.table(code=code.vector,label=label)

df = data.table(Rate = paste0("S-", c(4,4,4,1,2,4)))

Попытка:

df$rank = merge(df,lookup.table,by.x="Rate",by.y="code",all.x=TRUE,sort=F)$label

Ниже образец выходных данных, и слияние не дает ожидаемых результатов. Я ожидаю, что слияние присоединится к lookup.table и df, когда code = Rate.

                 rank           Rate
1                  10            S-4
2                  10            S-4
3                  10            S-3
4                  10            I-5
5                  10            I-5
6                  10            I-6
...