首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用R中的开始和结束标志确定事件的存在和唯一ID

使用R中的开始和结束标志确定事件的存在和唯一ID
EN

Stack Overflow用户
提问于 2018-07-24 04:02:53
回答 1查看 52关注 0票数 1

我有一个向量,它有一个独特的事件的开始和结束标志,在一个因子中编码为" start“和" end”。包括“开始”和“结束”之间的索引被计入事件的一部分。因此,我想使用eventFlageventIndex,前者是一个逻辑上指示事件是否正在发生的变量,后者为每个事件提供一个递增的数字。

代码语言:javascript
运行
复制
# what I have
eventPoints <- factor(c(NA,NA,NA,NA,"start",NA,NA,NA,NA,
    "end",NA,NA,"start",NA,"end",NA,NA,"start","end",NA))
# what I want
eventFlag <-c(FALSE,FALSE,FALSE,FALSE,TRUE,TRUE,TRUE,TRUE,
    TRUE,TRUE,FALSE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE,
    TRUE,FALSE)
eventIndex <-c(0,0,0,0,1,1,1,1,1,1,0,0,2,2,2,0,0,3,3,0)

data.frame(eventPoints,eventFlag,eventIndex)

事件是严格递增的,如果这有助于或简化事情的话。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-24 04:16:20

我们基于'eventPoints‘中'start','end’的对应出现创建一个序列索引

代码语言:javascript
运行
复制
s1 <- with(df1, unlist(Map(seq, which(eventPoints == "start"), 
                        which(eventPoints == "end"))))
df1$eventFlag <- FALSE
df1$eventFlag[s1] <- TRUE

并且可以使用游程长度编码(rle)创建“eventIndex”。

代码语言:javascript
运行
复制
df1$eventIndex <- inverse.rle(within.list(rle(df1$eventFlag), 
                   values[values] <- seq_along(values[values])))

df1
#   eventPoints eventFlag eventIndex
#1         <NA>     FALSE          0
#2         <NA>     FALSE          0
#3         <NA>     FALSE          0
#4         <NA>     FALSE          0
#5        start      TRUE          1
#6         <NA>      TRUE          1
#7         <NA>      TRUE          1
#8         <NA>      TRUE          1
#9         <NA>      TRUE          1
#10         end      TRUE          1
#11        <NA>     FALSE          0
#12        <NA>     FALSE          0
#13       start      TRUE          2
#14        <NA>      TRUE          2
#15         end      TRUE          2
#16        <NA>     FALSE          0
#17        <NA>     FALSE          0
#18       start      TRUE          3
#19         end      TRUE          3
#20        <NA>     FALSE          0

数据

代码语言:javascript
运行
复制
df1 <- data.frame(eventPoints)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51486436

复制
相关文章

相似问题

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