You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言处理dataframe:在onset事件前200ms处插入start事件行

R语言DataFrame插入start行解决方案

核心思路:先提取所有event列为onset的记录,批量生成对应time减200ms、event为start的新行,合并到原数据集后按time列排序即可,数千行数据规模下运行效率无压力。

tidyverse 实现(推荐,代码易读性高)

# 加载依赖包
library(dplyr)

# 生成需要插入的start行
new_rows <- df1 %>%
  filter(event == "onset") %>%
  mutate(
    time = time - 200,
    event = "start"
  )

# 合并数据并按时间排序得到最终结果
df2 <- bind_rows(df1, new_rows) %>%
  arrange(time)

base R 实现(无需额外安装依赖)

# 定位所有onset记录,生成对应的start行
onset_pos <- which(df1$event == "onset")
new_rows <- df1[onset_pos, ]
new_rows$time <- new_rows$time - 200
new_rows$event <- "start"

# 合并后按时间排序
df2 <- rbind(df1, new_rows)
df2 <- df2[order(df2$time), ]

特殊场景适配

如果你的数据存在同时间点多条记录的情况,需要保证start行排在同时间其他记录之前,可以调整排序逻辑:

library(dplyr)
df2 <- bind_rows(
  df1 %>% mutate(sort_weight = 1),
  new_rows %>% mutate(sort_weight = 0)
) %>%
  arrange(time, sort_weight) %>%
  select(-sort_weight)

内容的提问来源于stack exchange,提问作者JJT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 07:54:03