我正在处理演讲稿:
Utterance Starttime_ms Endtime_ms
<chr> <dbl> <dbl>
1 on this 210 780
2 okay 3403 3728
3 cool thanks everyone um 4221 5880
4 so yes in terms of our projects 5910 11960
5 let's have a look so the 11980 13740
6 LGBTQ plus 13813 16110
并希望在每行之后插入Utterance
一个新行,指示与前一行的时间差距Utterance
。所需的输出看起来有点像这样:
Utterance Starttime_ms Endtime_ms
<chr> <dbl> <dbl>
1 on this 210 780
NA 780 3403
2 okay 3403 3728
NA 3728 4221
3 cool thanks everyone um 4221 5880
NA 5880 5910
4 so yes in terms of our projects 5910 11960
NA 11960 11980
5 let's have a look so the 11980 13740
NA 13740 13813
6 LGBTQ plus 13813 16110
我知道如何做到这一点data.table
:
library(data.table)
unq <- c(0, sort(unique(setDT(df)[, c(Starttime_ms, Endtime_ms)])))
df <- df[.(unq[-length(unq)], unq[-1]), on=c("Starttime_ms", "Endtime_ms")]
但我正在寻找dplyr
解决方案。
数据:
df <- structure(list(Utterance = c("on this", "okay", "cool thanks everyone um",
"so yes in terms of our projects",
"let's have a look so the", "LGBTQ plus"), Starttime_ms = c(210,
3403, 4221, 5910, 11980, 13813), Endtime_ms = c(780, 3728, 5880,
11960, 13740, 16110)), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))
我
local()
在这里使用创建一个本地执行环境,如果您这样做,Starttime_ms
则Endtime_ms
相互覆盖:我不是输出单个值,而是返回一个数据框,该数据框利用了省略号
mutate()
可以...
采用数据框或小标题在输出中创建多个列的事实。输出
不是特别优雅,但
dplyr
有一个:输出:
一种方法使用
uncount
你可以尝试下面的代码
这使
这是一个简单的
dplyr
解决方案。请注意,我使用的大部分元素之前同事也提到过!一些基准: