我有一个数据框,其中包含一列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")
答案 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)
}