0
我有一系列代表用戶在網站上的活動的時間戳。我想將這些時間戳區分爲每個用戶的會話(定義爲時間戳不超過每個用戶1800秒)。如果可能的話,我想在我的數據集中添加一個名爲session_nr的列。 (。例如,如果時間戳是相距超過1800秒,或者它是一個新的用戶會話號應該增加)將時間戳標記爲R中的會話
的樣品數據集看起來像這樣:
user_id date
58683 2015-08-01 07:18:13
58683 2015-08-01 07:18:19
58683 2015-08-01 07:18:33
58683 2015-08-01 07:18:43
58683 2015-08-01 07:18:51
58683 2015-08-01 07:18:58
的數據被有序相對於每個用戶和時間。
有沒有辦法在R中循環遍歷用戶和一系列時間戳,以便我可以在我的數據集的每一行中添加會話編號?
我已經開始使用下面的代碼,但它不工作,也不知道如何添加會話編號。
user_session <- function(user, time_limit, data){
u1 <- data[which(data$user_id == user),]
Sys.setlocale("LC_TIME", "en_US.UTF-8")
u1$date <- as.POSIXct(u1$date)
u1$s.start <- c(TRUE, timediff(u1$date) > time_limit)
u1$s.stop <- c(u1$s.start[2:length(u1$s.start)], TRUE)
u1$sessions <- data.frame(
s.1 = which(u1$s.start), # starts
s.2 = which(u1$s.stop)) # stops
return(u1)
}
use <- as.data.frame(unique(data$user_id))
time_limit <- 1800
for (i in dim(use)[1]){
user <- use[i,1]
res <- user_session(user, time_limit, data)
}
您好,我從來沒有使用過的dplyr庫之前,所以我不明白的語法。這意味着我無法修改代碼以在我的腳本中工作。 df是data.frame的名字嗎? %>%是什麼意思? – Sofie
df確實是數據框的名稱。您可能需要閱讀[介紹小插曲](https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html)。 %>%(管道運算符)也在這裏解釋。 – Edwin
這個解決方案幫助我大量c.f.試圖瞭解重建+1的問題 – Surpdeh