我有类似 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/