r - 创建一个计数器,只计算某个逻辑值并给出相同的重复次数

标签 r dplyr datatable counter data-cleaning

假设我有这样的逻辑值

rex <- c(TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, NA)

如何创建一个计数器,该计数器仅对 TRUE 进行计数,并将连续重复分组为计数器中的相同值。前任。拥有这样的东西:

1, NA, 2,2,NA, 3, NA

最佳答案

接受的解决方案不适用于以下情况:

rex <- c(TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, NA, NA, TRUE)

它打印1 NA 2 2 NA 3 NA NA NA

以下函数返回正确答案:

solution <- function (rex) {
  result <- c()
  counter <- 1
  consecutive <- FALSE
  for (i in 1:length(rex)) {
    if (rex[i] == TRUE && !is.na(rex[i]) && consecutive) {
      result <- c(result, counter)
      consecutive <- TRUE
    } else if (rex[i] == TRUE && !is.na(rex[i]) && !consecutive) {
      result <- c(result, counter)
      consecutive <- TRUE
    } else{
      if(i < length(rex) && rex[i+1] == TRUE && !is.na(rex[i+1])){
        counter <- counter + 1
      }
      result <- c(result, NA)
      consecutive <- FALSE
    }
  }
  return(result)
}

调用 solution(rex) 打印 1 NA 2 2 NA 3 NA NA 4,这是正确的答案。

关于r - 创建一个计数器,只计算某个逻辑值并给出相同的重复次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62396301/

相关文章:

r - tidyr::complete 带有可变长度的列名向量

r - 如何使用时间序列数据在R中构建黄土模型

r - dplyr:为什么不使用 summarise() 来汇总案例?

r - R中的多个条件过滤

r - 如何停止在 dplyr 中使用 rowwise?

javascript - dataTables - 如何自定义分页类型以显示省略号后跟最后页码,

c# - “System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”由于其保护级别而无法访问

c# - Datatable 中的记录总数限制是多少?

R:如何按小时和分钟过滤时间戳?

R:如何更改列表对象的字符编码