2013-07-31 35 views
0

說我有一個數據幀提取rollapply評估爲TRUE的行集?

df <- data.frame(A=c(1,3,1,4,2,2,5,3,1,7,8),b=c(10:20),c=c(20:30)) 

,我想提取所有連續的行,其在列的總和爲4

我可以rollapply從包zoo貫穿和容易,如果發現有與

rollapply(df$A,2,function(x)(ifelse(sum(x)==4,print("YES"),print("NO")))) 

任何這樣的行,但我希望能夠只取出了此條件爲真行,把他們在另一個數據幀

sum4 <- data.frame(A=c(1,3,1,2,2,3,1),B=c(10,11,12,14,15,17,18),C=c(20,21,22,24,25,27,28)) 

這是可能的,如果是這樣,如何?

回答

3

保存您的滾動總和的東西的結果,然後構建包含在該等款項== 4是基於(row, row+1)

rs2 <- with(df,rollapply(A, 2, sum, fill = NA)) 
s4 <- sort(unique(c(s4 <- which(rs2==4),s4+1))) 
subset the appropriate rows 
df[s4,] 
# A b c 
# 1 1 10 20 
# 2 3 11 21 
# 3 1 12 22 
# 5 2 14 24 
# 6 2 15 25 
# 8 3 17 27 
# 9 1 18 28 
+0

這就是事情的行向量。謝謝一堆! – yawgeh

相關問題