2015-06-19 34 views
1

比方說,我們有一個數據幀:如何選擇數據框中的前幾行?

df <- data.frame(a=1:5, b=4:8) 

我怎麼能由以前的行子集?例如,如果我在第3行,我想獲取第1行和第2行的值,如果我在第4行,我想獲取值第2行和第3行。我如何在R中執行此操作?

+0

之前有多少行?從你的帖子看來,這似乎是兩個。 –

+0

不清楚,但你可以看看'head'或[lag](http://www.inside-r.org/packages/cran/Hmisc/docs/Lag)或[shift](https://github.com /Rdatatable/data.table) – user227710

+0

@Pascal是的,讓我們說這個例子的2行。我希望能有這樣的一般解決方案 – eyio

回答

0

使用zoo庫(要小心,因爲基地滯後的工作方式不同):

library(zoo) 
df <- zoo(df) 
df[lag(df$b, -1) == 4, ] 

    a b 
2 2 5 

df[lag(df$b, -2) == 4, ] 

    a b 
3 3 6 
0

這可能是太簡單了,但如果你想有一個通用的答案,這可能是恰到好處:

# create your data.frame, not using 'df' as it is an R function name 
myDF <- data.frame(a=1:5, b=4:8) 

# you know you "are at row 4" 
i <- 4 

# so you can get the previous two rows simply with 
myDF[ (i - 2:1), ] 
    a b 
2 2 5 
3 3 6 
相關問題