Метод vlookup для объекта ffdf в R
У меня есть объект ffdf под названием "data" с более чем 26 миллионами строк, который выглядит следующим образом:
Location DateandTime Value
1 1 01/01/2012 00:00:00 0.8
2 42 01/01/2012 00:00:00 0.4
3 14 01/01/2012 00:00:00 0.7
4 21 01/01/2012 00:00:00 0.2
Я хотел бы добавить четвертый столбец данных под названием "Группа" на основе значений в меньшем нормальном фрейме данных "поиск", который выглядит следующим образом:
Location Group
1 1 1
2 2 2
3 3 8
4 4 7
Поэтому я хочу, чтобы новый столбец в "данных" имел значения поиска $Group. Я знаю, что это можно сделать с помощью vlookup в Excel, и я нашел функции, которые могут работать с обычным df в R, такие как addNewData.r. Но как это можно сделать специально для объектов ffdf?
1 ответ
Есть много способов, которыми вы можете сделать этот тип соединения.
В R вы можете использовать merge
или вы можете использовать SQL через пакет sqldf
, просто чтобы назвать пару. Вот пример:
require(ff)
mydf <- data.frame(Location = seq(1:10),
DateandTime = seq(as.Date(Sys.Date()), by="days",
length=10),
Value = rnorm(10))
lookup <- data.frame(Location = seq(1:10),
Group = seq(20,29))
lookup
mydf <- as.ffdf(mydf) # you can make them both ffdf or just one and it still works
df2 <- merge(mydf,lookup, by = "Location")
df2
Location DateandTime Value Group
1 1 2016-06-26 0.6229381 20
2 2 2016-06-27 1.0009087 21
3 3 2016-06-28 1.1993809 22
4 4 2016-06-29 0.8809430 23
5 5 2016-06-30 -0.4233689 24
6 6 2016-07-01 -0.7101273 25
7 7 2016-07-02 0.4404004 26
8 8 2016-07-03 1.5120004 27
9 9 2016-07-04 0.5564032 28
10 10 2016-07-05 0.4839012 29
С другой стороны, лучше не называть ваши данные "данными", потому что, помимо путаницы, есть функция с именем data, которая по умолчанию загружается в глобальную среду.