在数据框子集中操作行的最佳方法是什么?

时间:2017-05-15 12:22:56

标签: r dplyr

我有一个数据框,它已按一组列分组。

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&lt; - df%&gt;%                     GROUP_BY(A)%&GT;%                     安排(B)

结果应该是,如果数据框显示有序:

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

1 个答案:

答案 0 :(得分:1)

使用dplyr你应该可以做这样的事情。

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