R заменить значение в столбце таблицей словаря без использования слияния или объединения - PullRequest
0 голосов
/ 01 июля 2019

Предположим, у меня есть таблица dict вроде:

id value
1 168833
2 367656
3 539218
4 892211
......(millions of lines)

и исходный фрейм данных, например:

name code 
Abo   1
Cm3   2
LL2   6
JJ    15

как заменить столбец кода в исходной таблице на словарную таблицу безиспользуя объединение или объединение?

1 Ответ

5 голосов
/ 01 июля 2019

Мы можем использовать match от base R

df1$value[match(df2$code, df1$id)]

Или другой вариант hashmap

library(hashmap)
hp <- hashmap(df1$id, df1$value)
hp[[df2$code]]

На основе примера в ?hashmap он работает быстрее

microbenchmark::microbenchmark(
     "R" = y[match(z, x)],
     "H" = H[[z]],
     times = 500L
 )
#Unit: microseconds
# expr     min       lq     mean   median       uq      max neval
#    R 154.197 202.1625 240.5838 229.1625 245.1735 6853.756   500
#    H  15.861  19.0235  22.7721  22.4490  24.9670   62.230   500
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...