Поиск значений в таблице данных в r - PullRequest
0 голосов
/ 26 августа 2018

Итак, я хочу найти значение ScoreLU на основе таблицы df.Например, значение 1.3730682 в DSCRpd должно возвращать значение ScoreLU, равное 60, то есть ближайшее значение.Да, точно так же, как функция vlookup в Excel.Есть ли пакет r, который может помочь, или кто-то решил эту проблему другим способом.

У меня есть 2 таблицы данных, первая называется df и содержит значения

[df][1]
   DSCRpd Leverage         TCB
1  1.3730682 2.010122 -1590099.11
2  1.0449597 2.680051   493370.85
3  1.0311141 4.790531    21594.63
4  1.3923007 3.279903  -499326.76
5  1.6443938 3.853003   988780.79
6  0.6265976 1.814359  1003736.73
7  2.1025253 4.412528  1245305.83
8  1.2872873 2.074424  -688305.83
9  0.5088294 2.504510  1406986.68
10 1.7794307 3.724905  1132513.33

Вторая таблицагде значения поиска хранятся как:

[ScoreLU][2]
   ScoreLU DSCRpd Leverage     TCB
 1:       0   0.65      5.0       0
 2:      10   0.80      4.5  100000
 3:      20   0.95      4.0  250000
 4:      30   1.10      3.5  500000
 5:      40   1.20      3.0  850000
 6:      50   1.26      2.5 1250000
 7:      60   1.35      2.0 1700000
 8:      70   1.65      1.5 2300000
 9:      80   2.00      1.0 2900000
10:      90   2.30      0.5 3600000

1 Ответ

0 голосов
/ 26 августа 2018

Использование data.table:

setDT(df1)[, ScoreLU  := setDT(df2)[df1, ScoreLU , on = "DSCRpd", roll = "nearest"]]

       DSCRpd Leverage         TCB ScoreLU
 1: 1.3730682 2.010122 -1590099.11      60
 2: 1.0449597 2.680051   493370.85      30
 3: 1.0311141 4.790531    21594.63      30
 4: 1.3923007 3.279903  -499326.76      60
 5: 1.6443938 3.853003   988780.79      70
 6: 0.6265976 1.814359  1003736.73       0
 7: 2.1025253 4.412528  1245305.83      80
 8: 1.2872873 2.074424  -688305.83      50
 9: 0.5088294 2.504510  1406986.68       0
10: 1.7794307 3.724905  1132513.33      70
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...