【发布时间】:2016-10-30 12:27:00
【问题描述】:
数据:
DB <- data.frame(orderID = c(1,2,3,4,4,5,6,6,7,8),
orderDate = c("1.1.12","1.1.12","1.1.12","13.1.12","13.1.12","12.1.12","10.1.12","10.1.12","21.1.12","24.1.12"),
itemID = c(2,3,2,5,12,4,2,3,1,5),
customerID = c(1, 2, 3, 1, 1, 3, 2, 2, 1, 1),
itemPrice = c(9.99, 14.99, 9.99, 19.99, 29.99, 4.99, 9.99, 14.99, 49.99, 19.99))
预期结果:
DB <- data.frame(orderID = c(1,2,3,4,4,5,6,6,7,8),
orderDate = c("1.1.12","2.1.12","3.1.12","13.1.12","13.1.12","12.1.12","10.1.12","10.1.12","21.1.12","24.1.12"),
itemID = c(2,3,2,5,12,4,2,3,1,5),
customerID = c(1, 2, 3, 1, 1, 3, 2, 2, 1, 1),
itemPrice = c(9.99, 14.99, 9.99, 19.99, 29.99, 4.99, 9.99, 14.99, 49.99, 19.99),
DateOfFirstOrderofCustomer = c("1.1.12", "2.1.12", "3.1.12", "1.1.12", "1.1.12", "3.1.12", "2.1.12", "2.1.12", "1.1.12", "1.1.12"))
为了理解:
orderID 是连续的。同一天从同一customerID 订购的产品将获得相同的orderID。当同一客户在另一天订购产品时,他/她是新的orderID。
我想为包含客户第一个订单日期的每一行/条目添加一个额外的列(例如,客户 1 (customerID1) 在1.1.12 下了他的第一个订单,因此在所有订单中都输入了此日期来自该客户)。我们该怎么做?
原始数据大约有 500k 行:所以请给出一个只需要很少性能的解决方案。
【问题讨论】:
-
您来自数据的
orderDate与预期结果不匹配。希望我的回答通过包含虚拟数据来解决这个问题。 -
没错 - 我的错误:/
标签: r