I am trying to do something in R that is equivalent to a "first value" windowing function in SQL, such as:

```
select *, first_value(value3) over (partition by value1, value2 order by value5 desc)
from df

```

Is there a good way to do this in R without having to create a database to use something like sqldf/RPostgreSQL?

I've seen some other examples like the answers here: [Cumulative sum by group in sqldf?](https://stackoverflow.com/questions/8559485/cumulative-sum-by-group-in-sqldf)

but I'm having some trouble figuring out how to do it with a function where the order within the window matters. Another thing is that I'm working with ~500K rows, and so performance is an concern.

Edit: here's an example:

```
item_id  rental_date   customer_id
I001     10/20/2012    1
I002     10/05/2012    4 
I001     10/15/2012    3
I004     10/19/2012    1
I001     10/11/2012    6
I002     9/15/2012     5
I004     10/13/2012    10
I001     9/30/2012     4

```

How would I determine the first customer to rent a given item for each month?