从开始日期和结束日期中提取包含R

时间:2020-10-16 04:28:59

标签: r time

我有一个数据框,其中包含一列ID号和每次ID登录网站的日期。我需要计算指定时间间隔之间“ ID”登录网站的总次数。

我想创建一个将输入login_check(startdate, enddate, ID)的函数 在参数中创建一个新的ID编号的数据框列,每一行都反映她在时间间隔内的每次登录尝试

然后我可以使用length()函数来计算时间范围内的登录总数

有人可以帮我在时间范围内为特定ID创建数据框吗?

数据:

structure(list(Order_ID = c(69L, 3025L, 3549L, 27L, 4561L, 2429L ), Date = structure(c(17899, 17921, 17925, 17923, 17917, 17919 ), class = "Date")), row.names = c(NA, 6L), class = "data.frame")

1 个答案:

答案 0 :(得分:0)

dplyr::filter可用于根据您的条件过滤数据集。

logins <- structure(list(Order_ID = c(69L, 3025L, 3549L, 27L, 4561L, 2429L ), Date = structure(c(17899, 17921, 17925, 17923, 17917, 17919 ), class = "Date")), row.names = c(NA, 6L), class = "data.frame") 

login_check <- function(startdate, enddate, ID) {
  dplyr::filter(logins, Order_ID == ID, Date >= startdate, Date <= enddate)
}

login_check('2019-01-01', '2020-01-01', 3025)
#> Order_ID       Date
#> 1     3025 2019-01-25

或者,如果您更喜欢基数R

login_check <- function(startdate, enddate, ID) {
  logins[logins$Order_ID == ID & logins$Date >= startdate & logins$Date <= enddate,]
}

或使用subset

login_check <- function(startdate, enddate, ID) {
  subset(logins, Order_ID == ID & Date >= startdate & Date <= enddate)
}