首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R如何基于时间分段序列生成增量序列

R如何基于时间分段序列生成增量序列
EN

Stack Overflow用户
提问于 2015-08-01 20:12:50
回答 1查看 118关注 0票数 1

我正试图将表单“initial.df”的数据文件转换为“final.df”,而我在编程和R方面的技能正受到严重的考验。我继续尝试各种方法,但都没有成功。

代码语言:javascript
复制
# minimal initial data structure
initial.df = cbind.data.frame(dtime = as.POSIXct(c("12:30", "12:31", "12:32", 
              "13:10","13:11","13:12","20:14","20:15", "20:160"), format="%H:%M"),
              flow=c(120, 100, 90, 110, 100, 95, 115, 100, 95))
initial.df

# minimal final data structure
final.df = cbind.data.frame(initial.df, cycle=c(rep(1, 3), rep(2,3), rep(3,3)))
final.df

作为背景,数据文件是在过滤过程中每分钟从膜生物反应器记录下来的数据,每个周期都有隔开的过滤间隙。每个周期持续几个小时。预先感谢您的协助。文斯,谢谢,文斯

更新数据集,以更好地反映实际数据类型:

代码语言:javascript
复制
 initial.df = cbind.data.frame(dtime = as.POSIXct(c("2015-12-18 23:58",
    "2015-12-18 23:59", "2015-12-19 00:01", "2015-12-19 00:02", "2015-12-19 4:58",
    "2015-12-19 04:59", "2015-12-19 05:00", "2015-12-19 05:01", "2015-12-19 5:02",
    "2015-12-19 07:59", "2015-12-19 08:00", "2015-12-19 08:01", "2015-12-19 8:02"), format="%Y-%m-%d %H:%M"), flow=c(120, 100, 90, 80, 75, 110, 100, 95, 85,  115, 100, 95, 90))
    initial.df

# final data structure
final.df = cbind.data.frame(initial.df, cycle=c(rep(1, 4), rep(2,5), rep(3,4)))
final.df
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-01 20:16:14

我们可以使用指定为“1小时”的“dtime”来创建一个分组变量,然后得到相邻元素( cut )之间的差异,检查哪个元素大于1,并在开始添加TRUE值后计算累积和(因为diff输出长度比“dtime”列的长度小1)。

代码语言:javascript
复制
initial.df$cycle <- cumsum(c(TRUE,diff(cut(initial.df$dtime, 
                            breaks='1 hour', labels=FALSE))>1))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31765784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档