R 基于条件创建序列
如果前一个值大于当前值,如何有条件地递增?假设我的数据帧上有一列x,我想要一列y,它从1开始,如果上一个值大于当前值,则递增R 基于条件创建序列,r,R,如果前一个值大于当前值,如何有条件地递增?假设我的数据帧上有一列x,我想要一列y,它从1开始,如果上一个值大于当前值,则递增 x y 1 1 2 1 3 1 4 1 5 1 6 1 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 1 3 2 3 5 3 正如@A5C1D2H2I1M1N2O1R2T1所提到的,您可以使用cumsum和diff来生成y cumsum(diff(x) < 0) + 1 #[
x y
1 1
2 1
3 1
4 1
5 1
6 1
1 2
2 2
3 2
4 2
5 2
6 2
7 2
8 2
1 3
2 3
5 3
正如@A5C1D2H2I1M1N2O1R2T1所提到的,您可以使用
cumsum
和diff
来生成y
cumsum(diff(x) < 0) + 1
#[1] 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3
数据
x <- c(1:6, 1:8, 1, 2, 5)
x看看diff
@Sathish这取决于你所说的“工作”是什么意思。它将完全适用于需要向量减少的总次数的情况。这就是OP的要求。
x <- c(1:6, 1:8, 1, 2, 5)