gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:34:18 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com