我需要通过涉及条件的mutate在dplyr中添加新列。我找不到在tidyverse中实现以下方案的方法,但可以在Excel中实现。那让我觉得自己像个野蛮人。有人知道如何在tidyverse中做到这一点吗?
以下是一些具有所需输出的玩具数据:
data.frame("n"=c(0,1,0,0,0,0,1,0,1,1),"running.count"=c(1,2,3,3,3,3,4,5,6,7))
答案 0 :(得分:0)
我们可以使用rleid
中的data.table
来创建running.count列
library(dplyr)
library(data.table)
df1 %>%
group_by(running.count = rleid(n) ) %>%
mutate(ind = if(all(n==1)) row_number() - 1 else 0) %>%
ungroup %>%
mutate(running.count = rleid(running.count, ind)) %>%
select(-ind)
# A tibble: 10 x 2
# n running.count
# <dbl> <int>
# 1 0 1
# 2 1 2
# 3 0 3
# 4 0 3
# 5 0 3
# 6 0 3
# 7 1 4
# 8 0 5
# 9 1 6
#10 1 7
df1 ,- structure(list(n = c(0, 1, 0, 0, 0, 0, 1, 0, 1, 1)),
class = "data.frame", row.names = c(NA, -10L))