R 向数据帧添加列并在给定条件语句的情况下填充

R 向数据帧添加列并在给定条件语句的情况下填充,r,conditional-statements,R,Conditional Statements,我有一个数据帧,在结构上看起来像这样,但有50000行长: df <- data.frame(X = c(1,2,3,4,1,2,1,2,3,4,5,1,2,3), Y = rnorm(14), Z = c("A","A","A","A","A","A","B","B","B","B","B","B","B","B")) df这个怎么样: df$NEW <- with(df, ave(X, Z, FUN=function(x) cumsum(c(TRUE, x[-1] < x

我有一个数据帧,在结构上看起来像这样,但有50000行长:

df <- data.frame(X = c(1,2,3,4,1,2,1,2,3,4,5,1,2,3), Y = rnorm(14), Z = c("A","A","A","A","A","A","B","B","B","B","B","B","B","B"))
df这个怎么样:

df$NEW <- with(df, ave(X, Z, FUN=function(x) cumsum(c(TRUE, x[-1] < x[-length(x)]))))

df$NEW
df$NEW这需要有条件吗?你的问题目前对meSo来说非常不清楚每次你看到X=1,你想把位置从1换到2,或者反之亦然?你的条件规则不清楚。你能从X,Y,Z的角度来阐明NEW的组成吗?我想添加新的列(位置),而不需要手动检查50000行,并单独添加所有内容。我只有X列和Z列才能到达示例df2中指定的新列。我想知道是否有一种方法可以通过条件语句或循环来实现自动化。这与(df,ave(X,Z,FUN=function(X)cumsum(X==1))
Flick先生,你的解决方案要好得多。
df$NEW <- with(df, ave(X, Z, FUN=function(x) cumsum(c(TRUE, x[-1] < x[-length(x)]))))