R:计算时间差(分组)

时间:2021-05-20 10:18:31

标签: r tidyverse plyr

我有以下示例数据

    class Team {
private Long id;
private String name;
private Set<Users> users

Constructors/Getter/Setters 

我的目标是为每个 ID 添加一个附加列,其中包含 A 和 B 之间的时间差(以秒或分钟为单位)。有人可以帮我吗?

它应该是这样的:

df <- data.frame(id = c(1,1,2,2,3,3),
                 times = c("2021-05-20 07:10:20", "2021-05-20 07:13:20", "2021-05-20 07:20:20", "2021-05-20 07:30:20", "2021-05-20 07:05:20", "2021-05-20 07:07:20"),
                 var1 = c("A", "B", "A", "B", "A", "B")) %>%
      mutate(times = as.POSIXct(times,format="%Y-%m-%d %H:%M:%OS"))

2 个答案:

答案 0 :(得分:2)

您可以使用以下解决方案:

library(dplyr)

df %>% 
  group_by(id) %>%
  mutate(diff_time = difftime(times, lag(times), units = "secs"))


# A tibble: 6 x 4
# Groups:   id [3]
     id times               var1  diff_time
  <dbl> <dttm>              <chr> <drtn>   
1     1 2021-05-20 07:10:20 A      NA secs 
2     1 2021-05-20 07:13:20 B     180 secs 
3     2 2021-05-20 07:20:20 A      NA secs 
4     2 2021-05-20 07:30:20 B     600 secs 
5     3 2021-05-20 07:05:20 A      NA secs 
6     3 2021-05-20 07:07:20 B     120 secs 

答案 1 :(得分:2)

使用 m1['v_int'] = m1['v'].astype(int)

data.table