【发布时间】:2019-12-04 19:39:47
【问题描述】:
我目前正在撰写在线广告课程的硕士论文。我有一个包含不同用户的 cookie 数据的数据集,我的目标是构建其他变量,用于计算用户网站类别访问的总数。
这是一个说明性示例,说明了我的数据集的结构以及我的数据集的相关变量的外观:
> print(data)
Imp_ID User_ID Website.category
1 10 50 Apparel & Jewelry
2 11 51 Apparel & Jewelry
3 12 52 Automotive
4 13 50 Apparel & Jewelry
5 14 51 Automotive
6 15 52 Automotive
7 16 52 Automotive
8 17 51 Apparel & Jewelry
9 18 50 Apparel & Jewelry
10 19 50 Automotive
11 20 51 Automotive
Impression ID 是唯一的,我有 100 个不同的用户和 20 个不同的网站类别。所有印象都按日期和时间排序(日期时间变量也可用,但我认为这个问题不是必需的)
我要做的是计算每个相应展示事件的先前用户网站类别展示的总数。例如,我有网站类别“服装和珠宝”。当用户对“服装珠宝”类网站的第一印象时,计数变量count_app.jew应该等于1,第二次出现相同的用户-网站类别组合时,这个新变量的值应该为 2,以此类推。
因此,我认为我需要为每一行定义一个类似于 for 循环的东西,它为每一行计算满足预定义条件的所有先前观察值(可能以某种方式使用 if 语句)。
这是我想要的结果:
> print(data2)
Imp_ID User_ID Website.category Count_app.jew Count_automotive
1 10 50 Apparel & Jewelry 1 0
2 11 51 Apparel & Jewelry 1 0
3 12 52 Automotive 0 1
4 13 50 Apparel & Jewelry 2 0
5 14 51 Automotive 1 1
6 15 52 Automotive 0 2
7 16 52 Automotive 0 3
8 17 51 Apparel & Jewelry 2 1
9 18 50 Apparel & Jewelry 3 0
10 19 50 Automotive 3 1
11 20 51 Automotive 2 2
为了解释逻辑,count_app.jew 在第一行等于 1,因为 ID=50 的用户在“服装和珠宝”网站上的第一印象。在第 2 行中,ID=51 的用户在“Apparel&Jewelry”网站上的第一印象,因此 count_app.jew 再次等于 1。在第 3 行中,ID=52 的用户访问了“汽车”类别的网站.由于此用户之前从未访问过“服装和珠宝”类别的网站,因此 count_app.jew 等于 0。相反,count_automotive 等于 1。在第 4 行中,count_app.jew 为 2,因为 ID=50 的用户已经是第二次访问该类别的网站了...
因此,我的问题是如何创建这些额外的计数变量。
我希望,背后的逻辑很清楚,有人知道解决这个问题的适当方法。由于我没有大的编码背景,我非常感谢任何帮助!
【问题讨论】:
-
嗨,Domi,Berbi,您能展示一个使用 dput 的数据示例吗?