【发布时间】:2014-06-11 23:34:54
【问题描述】:
嘿,我正在尝试从使用 ddply 过渡到使用 data.table,并且我即将弄清楚,但我仍然需要进行一些细微的调整。这是我正在尝试做的事情的摘要,使用玩具数据集:
假设我有两个产品数周的销售数据。
x <- structure(list(week = c(1, 1, 2, 3, 1, 2, 2, 3, 4), product = c("a",
"a", "a", "a", "b", "b", "b", "b", "b"), sold = c(10, 15, 20,
25, 30, 35, 40, 45, 50)), .Names = c("week", "product", "sold"
), row.names = c(NA, -9L), class = c("data.table", "data.frame"
), sorted = c("product", "week"))
week product sold
1: 1 a 10
2: 1 a 15
3: 2 a 20
4: 3 a 25
5: 1 b 30
6: 2 b 35
7: 2 b 40
8: 3 b 45
9: 4 b 50
我想找出产品 i 在第 j 周的总销售额,即我在第一周销售了 25 件产品 a。
我使用以下代码来做到这一点:
setDT(x)
setkey(x,product,week)
> x1 <- x[x,sum(sold)]
> x1
product week V1
1: a 1 25
2: a 1 25
3: a 2 20
4: a 3 25
5: b 1 30
6: b 2 75
7: b 2 75
8: b 3 45
9: b 4 50
问题是我不确定如何删除重复的行,即。第 2 行是多余的。此外,我还想在产品未销售的几周内包括 NA,即。第 4 周的产品行,值为 NA。
我确定这是一个简单的问题,并且我知道如何在 ddply 中执行此操作,但我无法通过搜索找到我要查找的内容。如果有人可以帮助我或将我链接到正确的页面(如果这是重复的),那就太好了。
【问题讨论】:
标签: r data.table