r - 有条件地在其他变量的同一列中添加带有变量的行

标签 r dplyr data-science data-wrangling

我有类似 df1(以毫秒为单位的时间)的东西,但是有数千行:

df1 <- data.frame(time=c(105, 202, 305, 408, 505, 608), event=c("", "", "", "onset", "", ""))

我想要做的是,对于“开始”的每个实例,在同一列中添加变量“开始”,并在该开始实例之前 200 毫秒添加。所以,在这个简化的案例中,它应该像这样结束:

df2 <- data.frame(time=c(105, 202, 208, 305, 408, 505, 608), event=c("", "", "start", "", "onset", "", ""))

我一直无法弄清楚如何做到这一点,将不胜感激!

最佳答案

我们可以使用data.table方法

library(data.table)
rbind(setDT(df1),
        df1[event == 'onset'][, c('time', 'event')
        := .(time - 200, 'start')])[order(time)]

-输出

 time event
1:  105      
2:  202      
3:  208 start
4:  305      
5:  408 onset
6:  505      
7:  608      

关于r - 有条件地在其他变量的同一列中添加带有变量的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67887258/

相关文章:

使用 devtools::build_win() 构建 R 包:版本包含大型组件 (0.0.0.9000)

r - data.table 在选定的列中重新编码

r - 在 R 的一行中找到一个单词

r - 在 R 中过滤多列高于特定阈值的数字

python - 使用 Python 从文本中删除非英语单词

ggplot 中facet_grid 中的按行着色

r - dplyr 将 NULL 传递给 group_by

r - 如何使用 "dplyr"链运算符 %>% 在 R 中获取左侧本身?

machine-learning - 密集层和卷积层的权重初始化是否不同?

python - 如何列出属于一组范围内的所有数字对?