从R中的时间间隔获取频率

时间:2018-08-19 17:37:40

标签: r time

希望您能帮助我解决我的问题。

例如,有关于人们上车(时间1)和下车(时间2)的数据。 我想找出的是在某个时间点,例如火车上有多少人。 2018/01/01 16:00查看数据集,我可以看到当时火车上有两个人。 最后,我想得到一张表格,其中一栏显示日期和小时,另一栏显示人数。在R中可以吗?

非常感谢!

Demo

我知道我没有为您提供很多信息。真的不知道如何在这里发布具有良好格式的内容... 我不希望有详细的解决方案,只是向正确的方向指点是很好的。

1 个答案:

答案 0 :(得分:1)

这是一个小例子,火车上有2个人,并且有2个兴趣点:

library(tidyverse)
library(lubridate)

# example dataframe (2 people on the train)
df = data.frame(start = c("2018-01-01 10:00:00", "2018-01-01 13:00:00"),
                end = c("2018-01-01 15:00:00", "2018-01-01 17:00:00"), stringsAsFactors = F)

# get a set of time points of interest
times = c("2018-01-01 16:00:00", "2018-01-01 09:00:00")


data.frame(times, stringsAsFactors = F) %>%  # for each time point of interest
  mutate(d = list(df)) %>%                   # join with inital dataset
  unnest() %>%                               # unnest data
  rowwise() %>%                              # for each row
  mutate(flag = between(ymd_hms(times), ymd_hms(start), ymd_hms(end))) %>% # add a flag value if the time point is between the start and end time
  group_by(times) %>%                        # for each time point
  summarise(NumPeople = sum(flag))           # add the flags to get number of users within the time frames

# # A tibble: 2 x 2
#   times               NumPeople
#   <chr>                   <int>
# 1 2018-01-01 09:00:00         0
# 2 2018-01-01 16:00:00         1