真的很难想出一个合适的标题,但希望这能解释我的问题所在:
假设我有一个数据集(或向量),其中一列是数值Frame_ID列,但它们不是唯一的id。例如Frame_ID= c(2,2,2,3,3,3,4,4,5,5,5,6,6,7,7,8,8,8,9,10,10,10,11等),这一直持续到Frame_ID=159753,没有任何特定的模式或规则来解释Frame_ID重复多少次。现在我想在一个新列中为每30个frame_id添加一个相应的时间戳(每30个frame_id 1秒),所以它最终看起来像这样:
Frame_ID | 时间戳 | 2 | 14:30:19 | 2
---|---|
14:30:19 | |
14:30:19 | |
3 | 14:30:19 |
… | … |
30 | 14:30:19 |
14:30:20 | |
14:30:20 |
在这里使用循环听起来效率低下。这对你有用吗?
data %>%
mutate(Timestamp = as.character(hms('14:30:19') + floor(Frame_ID/30)))
df <- data.frame(Frame_ID = c(2,2,2,3,30,31,31,39,59,60,69))
df$grp <- floor(df$Frame_ID/30)
df$Timestamp <- as.POSIXct("2000/01/01 14:30:19") + df$grp
df
#> Frame_ID grp Timestamp
#> 1 2 0 2000-01-01 14:30:19
#> 2 2 0 2000-01-01 14:30:19
#> 3 2 0 2000-01-01 14:30:19
#> 4 3 0 2000-01-01 14:30:19
#> 5 30 1 2000-01-01 14:30:20
#> 6 31 1 2000-01-01 14:30:20
#> 7 31 1 2000-01-01 14:30:20
#> 8 39 1 2000-01-01 14:30:20
#> 9 59 1 2000-01-01 14:30:20
#> 10 60 2 2000-01-01 14:30:21
#> 11 69 2 2000-01-01 14:30:21
format(df$Timestamp, format = "%H:%M:%S")
#> [1] "14:30:19" "14:30:19" "14:30:19" "14:30:19" "14:30:20" "14:30:20"
#> [7] "14:30:20" "14:30:20" "14:30:21" "14:30:21" "14:30:21"
Created on 2021-10-13 by the reprex package (v2.0.1)