Ale*_*der 4 r difference dplyr
我尝试将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"))
Run Code Online (Sandbox Code Playgroud)
但是得到错误
Error: incompatible size (9), expecting 10 (the group size) or 1
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做
DIFF(DF $ V)
[1] -10 -10 -10 -10 0 10 10 10 10 0 -10 -10 -10 -10 0 10 10 10 10 0 -10 -10 -10 -10 0 10 10 10 10
似乎在逻辑上有效.当我在里面做的时候为什么我会收到错误dplyr?
我们需要连接另一个值以使长度等于diff返回,其长度小于组的长度.即
length(df$V)
#[1] 30
length(diff(df$V))
#[1] 29
Run Code Online (Sandbox Code Playgroud)
因此,我们在开头用一个虚拟数字连接以使其length相等.
df %>%
group_by(gr) %>%
mutate(H=ifelse(c(0,diff(V))<0,"back","forward"))
Run Code Online (Sandbox Code Playgroud)
如果我们需要第一个值为"返回",请将条件更改为 <=0
| 归档时间: |
|
| 查看次数: |
1856 次 |
| 最近记录: |