Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the best way to access the second to last value in an R data.frame?

Tags:

dataframe

r

Suppose I have a data.frame called SLV and I apply the tail()function. I will get this:

> tail(SLV)

       SLV.Open SLV.High SLV.Low SLV.Close SLV.Volume SLV.Adjusted
2010-12-06    28.99    29.64   28.88     29.51   57561800        29.51
2010-12-07    29.95    30.00   28.03     28.08   69143800        28.08
2010-12-08    28.33    28.46   27.34     27.70   58203800        27.70
2010-12-09    28.10    28.36   27.83     28.03   36759200        28.03
2010-12-10    27.80    28.11   27.38     27.98   30602700        27.98
2010-12-13    28.84    29.04   28.59     28.87   25901800        28.87

tail() defaults to the last 6 values, but it's easy to get just the last 1 value.

>tail(SLV, n=1)

       SLV.Open SLV.High SLV.Low SLV.Close SLV.Volume SLV.Adjusted
2010-12-13    28.84    29.04   28.59     28.87   25901800        28.87

But what is the best way to return the second to last day? In our SLV example, it would be the line that is dated 2010-12-10.

like image 607
Milktrader Avatar asked Dec 15 '10 01:12

Milktrader


2 Answers

For yet another alternative:

tail(SLV,2)[-2]
like image 41
Joshua Ulrich Avatar answered Sep 22 '22 01:09

Joshua Ulrich


head(tail(SLV, n=2), n=1)

or

SLV[nrow(SLV)-1,]

will do it.

like image 107
kohske Avatar answered Sep 26 '22 01:09

kohske