2017-05-15 26 views
0

我有一個數據框已被分組的一列。操縱數據框子集中行的最佳方式是什麼?

df.grouped<- df%>% 
       group_by(A) 

我現在想要做的列C(數字)的值計算一下:

df.grouped[i, C_difference] <- df.grouped[ i, C] - df.grouped[ i-1 , C] 
df.grouped[0, C_difference] <- NULL 

有沒有辦法在管道要做到這一點,還是我做的是通過遍歷超過A和B的所有值?

for(A in unique(df$A)){ 
    for(B in unique(df$B)){ 

    (execute code) 

    } 
} 

DF

# A B 
# x 1 
# x 3 
# x 5 
# y 7 
# y 6 
# x 2 

組通過柱A,以便通過塔B df.grouped < - DF%>% GROUP_BY(A)%>% (B)

結果應該是,如果數據fr ame顯示訂購:

# A B C 
# x 1 NA 
# x 2 1 
# x 3 1 
# x 5 2 
# y 6 NA 
# y 7 1 
+1

請顯示一個很小的可重複的例子和預期的輸出 – akrun

+0

你可以在mutate調用中進行調用(你可以添加到管道中) –

回答

1

使用dplyr你應該可以做這樣的事情。

df.grouped<- df %>% 
      group_by(A, B) %>% 
      mutate(C_difference = C - lag(C)) 
相關問題