在R中使用非唯一id -number而不是在迭代中使用行数创建循环



真的很难想出一个合适的标题,但希望这能解释我的问题所在:

假设我有一个数据集(或向量),其中一列是数值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秒),所以它最终看起来像这样:

tbody> <<tr>223131
Frame_ID 时间戳
214:30:19
14:30:19
14:30:19
314:30:19
3014: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)

相关内容

  • 没有找到相关文章

最新更新