首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何按秒为间隔对数据进行分组?

如何按秒为间隔对数据进行分组?
EN

Stack Overflow用户
提问于 2019-08-20 23:52:06
回答 1查看 36关注 0票数 0

我有一些事件,我需要为每个试验的2秒间隔分组,我不确定如何做到这一点。

代码语言:javascript
运行
复制
event<- c('tr_start', 'mag', 'lev', 'lev', 'lev', 'mag',
'tr_start', 'mag','mag', 'lev', 'lev', 'lev', 'mag', 'mag') 
time<- c(6, 7, 8.5, 10.2, 11, 14, 14.5, 15.1, 16, 16.2, 17, 17.7,  18, 18.1)
trial<- c(rep(1, 6), rep(2,8))
df<- cbind(event, time, trial)

时间以秒为单位。预期的输出将是一个新的列'value‘,其中包含每种类型('mag’或'lev')的事件数之和,并且每个试验的开始时间由事件'tr_start‘定义。

这是试验1的期望输出:试验开始于6s (由'tr_start‘事件设置)。这意味着在试验2之前有3个2秒的间隔(6-8,8-10,10-12)。输出应该只计算在每个2秒的整数中出现的'mag‘和'lev’的数量。

代码语言:javascript
运行
复制
 event<- c('mag', 'lever',  'mag', 'lever', 'mag', 'lever')
 trial<- c(rep(1, 6))
 value<- c(1, 1, 0, 1, 1, 1)
 df_summarry<- cbind(event, trial, value) 

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-08-21 00:06:32

可能是这样的:

代码语言:javascript
运行
复制
df <- as.data.frame(df)
df$time  <- as.numeric(levels(df$time))[df$time]

tapply(seq_len(nrow(df)), df$trial, function(x) {
  tt  <- (df$time[x[-1]] - df$time[x[1]])  %/% 2 * 2
  tt <- factor(tt, levels=seq(0,max(tt),2))
  tt <- t(table(df$event[x[-1]], tt)[1:2,])
  data.frame(tStart = df$time[x[1]]+as.numeric(rownames(tt)), tEnd = 2+df$time[x[1]]+as.numeric(rownames(tt)), lev=tt[,1], mag=tt[,2])
})
#$`1`
#  tStart tEnd lev mag
#0      6    8   0   1
#2      8   10   1   0
#4     10   12   2   0
#6     12   14   0   0
#8     14   16   0   1
#
#$`2`
#  tStart tEnd lev mag
#0   14.5 16.5   1   2
#2   16.5 18.5   2   2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57577383

复制
相关文章

相似问题

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