gpt4 book ai didi

r - 如何计算元素在时间步 t 出现的总次数?

转载 作者:行者123 更新时间:2023-12-03 16:20:25 26 4
gpt4 key购买 nike

我是 R 的初学者,但我想编写一段需要一些 R 和数据科学知识的代码。
我有一个具有以下结构的数据框; t1 表示 10 分钟时间段,1 定义测量值。

 t1 t2 t3 t4
1 0 0 0
1 1 1 1
0 1 1 1
0 1 1 1
1 0 1 1
我想确定每次测量的持续时间和起点。例如,有两个 10 分钟的测量从 t1(第 1 行和第 5 行)开始,有两个 30 分钟的测量从 t2(第 3 行和第 4 行)开始。
输出:
 duration_minutes   t1 t2 t3 t4
10 2 0 0 0
20 1 0 1 0
30 0 2 0 0
40 1 0 0 0
有没有办法将计数转换为百分比?
df<-structure(list(t1 = c(1, 1, 0, 0,1),
t2 = c(0, 1, 1, 1,0), t3 = c(0, 1, 1, 1,1), t4 = c(0, 1, 1, 1,1)), row.names = c(NA,5L), class = "data.frame")


最佳答案

我已经解决了这个问题,首先将数据转换为长格式,然后计算连续的 1 以确定每次测量的持续时间。然后我计算每个开始时间每个持续时间发生的频率,并返回到更广泛的格式以获得您描述的输出(我没有找到列 t4 因为它没有任何新的测量值):

library(tidyr)
library(dplyr)

df %>%
mutate(rownr = 1:nrow(.)) %>%
pivot_longer(names_to = 'time', values_to = 'value', cols = 1:4) %>%
group_by(rownr, grp = cumsum(value == 0)) %>%
mutate(duration = 10 * cumsum(value)) %>%
filter(duration != 0) %>%
summarise(time = first(time),
duration = max(duration)) %>%
group_by(time, duration) %>%
count() %>%
pivot_wider(names_from = time, values_from = n, values_fill = 0) %>%
arrange(duration)

关于r - 如何计算元素在时间步 t 出现的总次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63908777/

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