按组计算字符串值出现的次数
Counting the times a string value has occured by group
我正在研究 R 中的一项功能,该功能将有助于从我们的网站数据中识别用户会话。会话取决于用户何时登录、登录时执行的操作以及注销。我们目前有一个包含所有用户登录、操作和注销的巨大列表。我正在创建的函数将循环遍历每个用户采取的操作并检测登录。每次登录时,该用户的会话计数都会增加 1。
我想要完成的 Sudo 代码:
Group by userid
Set i = 0
Begin Looping Through Action Types
If type = ‘Log In’
i = i+1
return i
else
return i
我目前的R代码如下:
Table %>% group_by(userid) %>% mutate( Session_List =
for (type in PinnacleActivityLog){
i = 0
if (str_detect(type, "Log In")){
i = i+1
Session_List = i
}else{
Session_List = i
}
})
数据:
table <- data.frame(
userid = c("111", "111", "111", "111", "111", "111", "111", "111", "222", "222", "222", "111", "111", "222", "222", "222"),
timestamp = c("11/2/2020 15:26", "11/2/2020 15:56", "11/2/2020 15:56", "11/2/2020 16:30", "11/2/2020 17:43", "11/2/2020 19:05", "11/4/2020 19:15", "11/4/2020 20:05", "11/3/2020 19:23", "11/3/2020 19:50", "11/3/2020 20:15", "11/4/2020 22:25", "11/4/2020 22:45", "11/5/2020 12:45", "11/5/2020 12:50", "11/5/2020 12:55"),
type = c("Log In", "Search", "Click", "Click", "Search", "Log Out", "Log In", "Log Out", "Log In", "Search", "Log Out", "Log In", "Log Out", "Log In", "Click", "Log Out")
)
期望的结果
任何有关如何调整 R 代码以执行任务的帮助,我们将不胜感激!
您可以使用
table %>%
group_by(userid) %>%
mutate( Session_List = cumsum(str_detect(type, "Log In")))
每次检测到“登录”时,str_detect
都将为 TRUE,并且通过使用 cumsum
(累计总和),基本上每次发生时计数都会增加 1(因为在对值求和时,TRUE 被视为 1,FALSE 被视为 0)
我正在研究 R 中的一项功能,该功能将有助于从我们的网站数据中识别用户会话。会话取决于用户何时登录、登录时执行的操作以及注销。我们目前有一个包含所有用户登录、操作和注销的巨大列表。我正在创建的函数将循环遍历每个用户采取的操作并检测登录。每次登录时,该用户的会话计数都会增加 1。
我想要完成的 Sudo 代码:
Group by userid
Set i = 0
Begin Looping Through Action Types
If type = ‘Log In’
i = i+1
return i
else
return i
我目前的R代码如下:
Table %>% group_by(userid) %>% mutate( Session_List =
for (type in PinnacleActivityLog){
i = 0
if (str_detect(type, "Log In")){
i = i+1
Session_List = i
}else{
Session_List = i
}
})
数据:
table <- data.frame(
userid = c("111", "111", "111", "111", "111", "111", "111", "111", "222", "222", "222", "111", "111", "222", "222", "222"),
timestamp = c("11/2/2020 15:26", "11/2/2020 15:56", "11/2/2020 15:56", "11/2/2020 16:30", "11/2/2020 17:43", "11/2/2020 19:05", "11/4/2020 19:15", "11/4/2020 20:05", "11/3/2020 19:23", "11/3/2020 19:50", "11/3/2020 20:15", "11/4/2020 22:25", "11/4/2020 22:45", "11/5/2020 12:45", "11/5/2020 12:50", "11/5/2020 12:55"),
type = c("Log In", "Search", "Click", "Click", "Search", "Log Out", "Log In", "Log Out", "Log In", "Search", "Log Out", "Log In", "Log Out", "Log In", "Click", "Log Out")
)
期望的结果
任何有关如何调整 R 代码以执行任务的帮助,我们将不胜感激!
您可以使用
table %>%
group_by(userid) %>%
mutate( Session_List = cumsum(str_detect(type, "Log In")))
每次检测到“登录”时,str_detect
都将为 TRUE,并且通过使用 cumsum
(累计总和),基本上每次发生时计数都会增加 1(因为在对值求和时,TRUE 被视为 1,FALSE 被视为 0)