我有一个数据框,它已按一组列分组。
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
答案 0 :(得分:1)
使用dplyr你应该可以做这样的事情。
df.grouped<- df %>%
group_by( A, B ) %>%
mutate(C_difference = C - lag(C))