【问题标题】:Determining the number of user dropping after an occurence确定发生后丢弃的用户数
【发布时间】:2016-06-22 13:26:07
【问题描述】:

我是一个看起来像这样的数据库:

userId 屏幕平台版本 01 第一个IOS 1.0.1 01 主IOS 1.0.1 02 第一个Android 1.0.2 03 第一个IOS 1.0.2 03 主IOS 1.0.2 03 详细介绍IOS 1.0.2

基本上我想知道有多少人在第一个屏幕后“掉线”,所以我的想法是创建一个新列,它通过 userId 告诉用户通过的屏幕数, 理想的数据库应该是这样的:

userId 不同屏幕平台版本 01 2 IOS 1.0.1 02 1 安卓 1.0.2 03 3 IOS 1.0.2

我试过了:

设置DT(数据库)[订单(用户ID),。 (DifferentScreen = uniqueN(Screen), Version = Version[1L], Platform = Platform[1L], by = userId)]

但它不起作用,我发现的问题是:它没有按 userId 分组,因为列数保持不变,我使用命令 uniqueN 因为我没有找到只执行 .N 的命令()。

【问题讨论】:

  • 感谢您的提问。我们可以尝试处理此问题,但您始终最好使用dput 数据或以其他方式使其易于重现,以便我们可以在 R 中处理您的示例数据。

标签: r


【解决方案1】:

你基本上就在那里。关于缺少括号只有一个小问题。试试:

dt[order(userId) ,. (DifferentScreen = uniqueN(Screen), Version = Version[1L], Platform = Platform[1L]), by = userId]

   userId DifferentScreen Version Platform
1:      1               2   1.0.1      IOS
2:      2               1   1.0.2  Android
3:      3               3   1.0.2      IOS

您需要在by = userID 之前而不是之后关闭括号。这样data.tableby=... 读取为通过分组而不是称为by 的新变量。目前,您的输出数据集没有按任何分组,它认为您要创建一个名为 by 的变量。

您可以在旧代码的结果中看到这一点:

dt[order(userId) ,. (DifferentScreen = uniqueN(Screen), Version = Version[1L], Platform = Platform[1L], by = userId)]

#See how this creates a variable "by"?
   DifferentScreen Version Platform by
1:               3   1.0.1      IOS  1
2:               3   1.0.1      IOS  1
3:               3   1.0.1      IOS  2
4:               3   1.0.1      IOS  3
5:               3   1.0.1      IOS  3
6:               3   1.0.1      IOS  3

数据

dt <- structure(list(userId = c(1L, 1L, 2L, 3L, 3L, 3L), Screen = structure(c(2L, 
3L, 2L, 2L, 3L, 1L), .Label = c("detail", "first", "main"), class = "factor"), 
    Platform = structure(c(2L, 2L, 1L, 2L, 2L, 2L), .Label = c("Android", 
    "IOS"), class = "factor"), Version = structure(c(1L, 1L, 
    2L, 2L, 2L, 2L), .Label = c("1.0.1", "1.0.2"), class = "factor")), .Names = c("userId", 
"Screen", "Platform", "Version"), class = c("data.table", "data.frame"
), row.names = c(NA, -6L), .internal.selfref = <pointer: 0x0000000000250788>)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2011-01-19
    • 1970-01-01
    相关资源
    最近更新 更多