我尝试将mutate
新列添加到data.frame。当V
列顺序从递减顺序更改为递增顺序时,我使用diff
里面的函数mutate
将它们归类到新列中H
。
V <- c(seq(30,-10,-10),seq(-10,30,10))
gr = rep(seq(1,3),each=10)
df <- data.frame(V,gr)
library(dplyr)
diff_df <- df%>%
group_by(gr)%>%
mutate(H=ifelse(diff(V)<0,"back","forward"))
但是越来越错误
Error: incompatible size (9), expecting 10 (the group size) or 1
但是当我这样做
差异(df $ V)
[1] -10 -10 -10 -10 0 10 10 10 10 0 -10 -10 -10 -10 -10 0 10 10 10 10 0 -10 -10 -10 -10 -10 0 10 10 10 10
似乎在逻辑上工作。为什么在内部进行操作时会出错dplyr?
我们需要将一个以上的值连接起来,以使长度等于diff
返回值,其长度小于组的长度。IE
length(df$V)
#[1] 30
length(diff(df$V))
#[1] 29
因此,我们在开始时将一个虚拟数字连接起来以使其length
相等。
df %>%
group_by(gr) %>%
mutate(H=ifelse(c(0,diff(V))<0,"back","forward"))
如果我们需要第一个值是“ back”,则将条件更改为 <=0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句