2014-01-22 26 views
-1

我有個約會幀看起來大約在接下來的方式:如何在前面的行中添加新的數據幀! [R

x<-c(0,0,0,0,0,1,1,1,0,1,0) 
y<-c(12,12,3,45,6,5,63,2,3,4,5) 
z<-data.frame(x,y) 
z 
# x y 
#1 0 12 
#2 0 12 
#3 0 3 
#4 0 45 
#5 0 6 
#6 1 5 
#7 1 63 
#8 1 2 
#9 0 3 
#10 1 4 
#11 0 5 

我想運行一個函數或循環,其發現在x行相等於1,並加入到一個新的數據幀中,該行和前面4行。

+0

'其中(Z $ X == 1)'給出了x是1的索引。你是否想要所有這些索引的前四行? – user1981275

+0

感謝您的評論。對於他們每個人來說,確切的說是 – Jack

+0

然後你是否想要四個數據框(對於'z'的第6,7,8,10行)?然後你可以這樣做:'lapply(which(z $ x == 1),function(x)z [(x-4):x,])''。或者你想在最後只有一個數據框? – user1981275

回答

0

小即興到@ user1981275用小修複方案,如果沒有前面的行,以避免負索引

l <- lapply(which(z$x==1), function(x) { 
    z[(ifelse(x-4 < 1, 1, x-4)):x,] 
}) 
do.call(rbind, l) 
+0

這實際上是我尋找的.. – Jack

+0

對不起,我不明白你的意見。 –

1

可以創建一個索引:

z[sapply(which(as.logical(z$x)), function(x) seq(x - 4, x)), ]