【发布时间】:2019-02-25 02:06:42
【问题描述】:
这是我第一次提出问题,请多多包涵。
我的数据集(df)是这样的:
animal azimuth south distance
pb1 187.561 1 1.992
pb1 147.219 1 8.567
pb1 71.032 0 5.754
pb1 119.502 1 10.451
pb2 101.702 1 9.227
pb2 85.715 0 8.821
我想创建一个额外的列 (df$cumdist) 来增加累积距离,但在每个单独的动物内并且仅当 df$south==1 时。我希望用df$south==0 重置累积和。
这就是我想要的结果(手动完成):
animal azimuth south distance cumdist
pb1 187.561 1 1.992 1.992
pb1 147.219 1 8.567 10.559
pb1 71.032 0 5.754 0
pb1 119.502 1 10.451 10.451
pb2 101.702 1 9.227 9.227
pb2 85.715 0 8.821 0
这是我尝试实现 cumsum 的代码:
swim.az$cumdist <- cumsum(ifelse(swim.az$south==1, swim.az$distance, 0))
虽然在df$south==0 时成功停止添加,但不会重置。此外,我知道我需要将其嵌入到 for 循环中,以按动物进行子集。
非常感谢!
【问题讨论】:
标签: r for-loop if-statement cumsum