Метод 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, которая по умолчанию загружается в глобальную среду.

Другие вопросы по тегам