Каков наилучший способ доступа ко второму или последнему значению в R data.frame? - PullRequest
9 голосов
/ 15 декабря 2010

Предположим, у меня есть data.frame с именем SLV, и я применяю функцию tail (). Я получу это:

> 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 () по умолчанию использует последние 6 значений, но легко получить только последнее 1 значение.

>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

Но каков наилучший способ вернуть второй последний день? В нашем примере SLV это будет строка 2010-12-10.

Ответы [ 4 ]

19 голосов
/ 15 декабря 2010
head(tail(SLV, n=2), n=1)

или

SLV[nrow(SLV)-1,]

сделает это.

6 голосов
/ 15 декабря 2010

Для еще одной альтернативы:

tail(SLV,2)[-2]
3 голосов
/ 15 декабря 2010

голова (хвост (SLV, n = 2), n = 1)

0 голосов
/ 15 декабря 2010

Очень немного более общий, чем SLV [nrow (SLV) -1,]:

SLV[rev(1:nrow(SLV))[2],]

Литерал [2] можно заменить вектором, который, возможно, более точный, если требуется более одной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...