【发布时间】:2018-05-27 16:46:23
【问题描述】:
我的数据包含时间变量和选择的品牌变量,如下所示。 time表示购物时间,choicebrand表示当时购买的品牌。
有了这些数据,我想创建排名变量,如第三列、第四列等所示。
品牌排名(例如,brand1 - brand3)应基于过去 36 小时。因此,要计算第二行的排名,其商店时间为"2013-09-01 08:54:00 UTC",排名应基于该时间前 36 小时内的所有chosenbrand 值。 (第二行的brand1 不应在 36 小时内)
因此,rank_brand1, rank_brand2, rank_brand3, rank_bran4,,, 是我想要的变量。
如果我想创建 rank_brand5,rank_brand6 也是如此......
有什么简单的方法吗?
另外,如果我要个人做(如果每个客户都有多个购买历史),该怎么做?
数据如下,
shoptime chosenbrand rank_brand1 rank_brand2 rank_brand3, ...
2013-09-01 08:35:00 UTC brand1 NA NA NA
2013-09-01 08:54:00 UTC brand1 1 NA NA
2013-09-01 09:07:00 UTC brand2 1 2 NA
2013-09-01 09:08:00 UTC brand3 1 2 3
2013-09-01 09:11:00 UTC brand5 1 2 3
2013-09-01 09:14:00 UTC brand2 1 2 3
2013-09-01 09:26:00 UTC brand6 1 1 3
2013-09-01 09:26:00 UTC brand2 1 1 3
2013-09-01 09:29:00 UTC brand2 2 1 3
2013-09-01 09:32:00 UTC brand4 2 1 3
这是数据代码
dat <- data.frame(shoptime = c("2013-09-01 08:35:00 UTC", "2013-09-01 08:54:00 UTC", "2013-09-01 09:07:00 UTC" ,"2013-09-01 09:08:00 UTC", "2013-09-01 09:11:00 UTC", "2013-09-01 09:14:00 UTC",
"2013-09-01 09:26:00 UTC", "2013-09-01 09:26:00 UTC" ,"2013-09-01 09:29:00 UTC", "2013-09-01 09:32:00 UTC"),
chosenbrand = c("brand1", "brand1", "brand2", "brand3", "brand5", "brand2", "brand6", "brand2" , "brand2" , "brand4" ),
rank_brand1 = NA,
rank_brand2 = NA,
rank_brand3 = NA,
stringsAsFactors = FALSE)
【问题讨论】:
-
我需要计算最近 36 小时内的观察结果。有什么想法吗?
-
请问有人可以帮忙吗?
-
为什么
NA在第一排是rank_brand2?根据您的band1、band2和band3提供的数据,在第一行的 36 小时内可用。 -
第一行 rank_brand1 应该是 NA。我刚刚更正了。由于第一行之前没有先前的历史记录,因此都应该是 NA。还有第二行的历史
-
关于您的附加问题,请提出一个单独的问题并提供样本数据,其中包括多个客户的购买历史。谢谢。
标签: r dataframe dplyr data.table plyr