访问R data.frame中倒数第二个值的最佳方法是什么?
假设我有一个名为SLV的data.frame,并应用tail()函数。我会得到这个:访问R data.frame中倒数第二个值的最佳方法是什么?,r,dataframe,R,Dataframe,假设我有一个名为SLV的data.frame,并应用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 6914
> 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的线条。头(尾(SLV,n=2),n=1)
或
就可以了。另一种选择:
tail(SLV,2)[-2]
比SLV更一般[nrow(SLV)-1,]:
文字[2]可以替换为向量,如果需要多行,则向量可能更整洁 我认为第二种解决方案是完成这项任务的正确方法。第一个太复杂了,当你在头/尾的
head
和tail
+1中查看底层代码时,不管它们的实现如何-根据我的经验,它们是健壮的SLV[nrow(SLV)-1,]
要快得多。如果特定列是目标,SLV$SLV.Open[nrow(SLV)-1]
比SLV[nrow(SLV)-1,“SLV.Open”]
快,或者rev(1:nrow(SLV))
可以使用(nrow(SLV):1)
。
SLV[nrow(SLV)-1,]
tail(SLV,2)[-2]
SLV[rev(1:nrow(SLV))[2],]