【发布时间】:2020-05-30 10:01:21
【问题描述】:
我有一个大型数据集 (dt),它有一个时间列(时间以秒为单位)和一个列,当其他一些变量满足某个值时记录为 1,当它们不满足时记录为 0,例如:
time (s) var
0 1
0.3 1
0.6 0
0.9 0
1.2 1
1.5 1
1.8 0
第 1 部分)我想要做的是每次在计数列中重复 1 作为唯一出现(超过两次)时计数,如下所示:
time (s) var count
0 1 1
0.3 1 1
0.6 0 0
0.9 0 0
1.2 1 2
1.5 1 2
1.8 0 0
在同一回合中的每次出现都将具有相同的数字,而出现 0 的地方则没有计数。
对于第 1 部分,到目前为止我已经有了这个,但我希望它能够将每个唯一出现的次数打印为一列中的计数,而它不会这样做:
with(rle(dt$var), sum(lengths[values] > 2))
第 2 部分)我还想知道每次出现持续的时间长度。 (我还有一个复制列,每行的值为 1)
我试过这个来计算第 2 部分,但它不起作用......
var_time <- dt %>%
group_by(replicate) %>%
mutate(var_time = cumsum(var != lag(var, default = ""))) %>%
group_by(var, time) %>%
summarise(start = min(time),
end = max(time),
var = sum(var))
【问题讨论】:
-
请使用
dput添加数据并显示相同的预期输出。请阅读有关how to ask a good question 的信息以及如何提供reproducible example。此外,每个帖子最好只问一个问题。 -
我觉得这个数据集实在是太大了,上传不了,有50多列500000行..