r - 在 R 中对具有特定条件的事件进行计数以了解事件含义

标签 r loops conditional-statements

我是 R 的初学者,但直到这一刻我才能够找到与 R 编码相关的所有答案。这次我什至不知道从哪里开始,所以我非常感谢你的帮助。我有一个 .csv 文件,我的数据片段如下:

   `year `               `1k`  `2k`  `3k`  `4k`  `5k`                  
 1 `1981-01-01 00:00:00 NA    NA    NA    NA    NA`   
 2 `1981-01-02 00:00:00 NA    NA    NA    NA    NA`   
 3 `1981-01-03 00:00:00 NA    NA    NA    NA    NA`   
 4 `1981-01-04 00:00:00 NA    NA    COLD  COLD  COLD`   
 5 `1981-01-05 00:00:00 NA    NA    NA    COLD  NA`   
 6 `1981-01-06 00:00:00 COLD  NA    NA    COLD  NA`   
 7 `1981-01-07 00:00:00 COLD  NA    NA    COLD  NA`   
 8 `1981-01-08 00:00:00 COLD  NA    NA    COLD  COLD`   
 9 `1981-01-09 00:00:00 COLD  NA    NA    NA    NA`   
10 `1981-01-10 00:00:00 NA    NA    NA    NA    NA`   
11 `1981-01-11 00:00:00 NA    COLD  NA    NA    NA`   
12 `1981-01-12 00:00:00 NA    COLD  NA    COLD  COLD`   
13 `1981-01-13 00:00:00 NA    NA    NA    NA    NA`   
14 `1981-01-14 00:00:00 COLD  NA    NA    NA    NA`   
15 `1981-01-15 00:00:00 NA    NA    NA    NA    NA`   
16 `1981-01-16 00:00:00 COLD  NA    NA    NA    NA`   
17 `1981-01-17 00:00:00 NA    NA    NA    NA    NA`   
18 `1981-01-18 00:00:00 NA    NA    NA    COLD  NA`   
19 `1981-01-19 00:00:00 NA    NA    NA    COLD  NA`   
20 `1981-01-20 00:00:00 NA    NA    NA    COLD  NA`  

我知道如何计算 COLD 事件的数量,但我需要一个特定条件 -> 计算连续有 3 个或更多 COLD 记录的所有事件,并且然后将每列 k1、k2、k3...等中的所有事件相加。分别地。对于给定的数据示例,它将是:k1=1、k2=0、k3=0、k4=2、k5=0。我本来想使用重复循环,但真的不知道从哪里开始。

最佳答案

跨列使用“游程长度编码”(rle)。这是一个执行此操作的函数(假设您的数据框是 df:

rle_col = function(k_col, num = 3){
  k_col[is.na(k_col)] = "NA" # convert NAs
  r = rle(k_col) # run length encoding
  which_cold = r$values == "COLD"
  sum(r$lengths[which_cold] >= num)
}

sapply(df[-1], rle_col)

关于r - 在 R 中对具有特定条件的事件进行计数以了解事件含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68999738/

相关文章:

r - 带有用户输入的 knitr

R 函数返回值以及警告消息

javascript - 创建并数组,然后循环查找 i 然后提醒用户名

java - 使用单个 while 循环与 while 和 if 组合

loops - 如何让 while 语句在 python 3 中再运行一次

r - 检查组 ID 是否所有行都相等并返回 bool 值

r - 将算术运算符视为函数

计算数组中字符出现的次数

python - 条件顺序会影响性能吗?

arrays - bash 数组保留包含字符串的元素