【问题标题】:Counting the times a string value has occured by group按组计算字符串值出现的次数
【发布时间】:2021-08-23 16:09:32
【问题描述】:

我正在研究 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 代码以执行任务的帮助将不胜感激!

【问题讨论】:

    标签: r dplyr stringr


    【解决方案1】:

    你可以使用

    table %>% 
      group_by(userid) %>% 
      mutate( Session_List = cumsum(str_detect(type, "Log In")))
    

    每次检测到“登录”时,str_detect 都会为 TRUE,并且通过使用 cumsum(累积总和),您基本上每次都会将计数增加 1(因为 TRUE 被视为 1和 FALSE 为 0 时求和)

    【讨论】:

    • 太棒了,太棒了!非常感谢!
    猜你喜欢
    • 2020-05-06
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多