【发布时间】:2020-11-12 12:30:17
【问题描述】:
我有一个看起来像这样的数据...
df <- tibble (
old_col = c(FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE))
...我正在尝试编写一个 for 循环,该循环将添加一个递增计数的变量,每次有 TRUE 时都会更改,所以我最终得到一个像这样的 df...
df <- tibble (
old_col = c(FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE),
new_col = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3)
到目前为止,我已经尝试过这段代码...
for(i in 1:nrow(df)){
if(i==1){
df$new_col[i]= 1 # For first point
}
else if(df$old_col[i] == "FALSE") {
df$new_col[i]=df$new_col[i-1]
}
else {
df$new_col[i]=2
}
}
但是 else 部分是错误的。我不知道该放什么让它计数为 3,然后下次有 TRUE 时计数为 4。
我是循环新手!感谢您的帮助!
PS 如果有针对此类问题的 tidyverse 解决方案,我很想听听。
【问题讨论】: