Img Time
1 B 1
2 B 2
3 B 3
4 B 7
5 B 8
6 B 11
7 G 12
8 G 14
9 G 16
10 G 21
大家好,
以上是我正在使用的数据类型的过度简化版本。我有一段时间(时间)的图像( Img )。
我想知道每个Img的显示时间,然而,我所拥有的数据使得很难获得该信息。没有唯一值来指示图像何时开始或停止,并且在显示新图像后定时器不会重置。
我想创建一个新列,显示相对于首次显示图像的时间。示例如下:
Img Time ElapTime
1 B 1 1
2 B 2 2
3 B 3 3
4 B 7 7
5 B 8 8
6 B 11 11
7 G 12 1
8 G 14 3
9 G 16 5
10 G 21 10
有没有办法识别重复序列中的第一个和最后一个元素?知道这可能会帮助我创建一个调整的时间列。
非常感谢任何帮助!
答案 0 :(得分:2)
我们按照' Img'并减去时间'来自first
'时间'
library(dplyr)
df1 %>%
group_by(Img) %>%
mutate(ElapTime = Time - first(Time) + 1)
# A tibble: 10 x 3
# Groups: Img [2]
# Img Time ElapTime
# <chr> <int> <dbl>
# 1 B 1 1
# 2 B 2 2
# 3 B 3 3
# 4 B 7 7
# 5 B 8 8
# 6 B 11 11
# 7 G 12 1
# 8 G 14 3
# 9 G 16 5
#10 G 21 10
或使用ave
base R
df1$ElapTime <- with(df1, ave(Time, Img, FUN = function(x) x- x[1]+1))