R语言如何统计数据列中连续3次及以上COLD事件的发生次数
解决方案
你可以直接用R内置的rle()(游程长度编码)函数实现需求,不需要手动写循环,代码如下:
# 读取csv数据,check.names=FALSE保留原始列名 df <- read.csv("你的文件路径.csv", stringsAsFactors = FALSE, check.names = FALSE) # 定义单列连续COLD统计函数 count_cold_event <- function(col) { # 转换为逻辑向量:仅等于COLD且非NA的位置为TRUE cold_flag <- !is.na(col) & col == "COLD" # 计算游程 rle_res <- rle(cold_flag) # 统计连续≥3次COLD的事件数 sum(rle_res$lengths >= 3 & rle_res$values) } # 对1k~5k列批量应用函数,得到结果 res <- sapply(df[, c("1k", "2k", "3k", "4k", "5k")], count_cold_event) # 打印结果 print(res)
结果验证
针对你提供的样例数据,上述代码输出结果为:
1k 2k 3k 4k 5k 1 0 0 2 0
和你预期的结果完全一致。
内容的提问来源于stack exchange,提问作者Indrute
相关产品推荐
相关产品推荐

