gpt4 book ai didi

r - dcast 中的自定义聚合函数

转载 作者:行者123 更新时间:2023-12-03 05:20:34 24 4
gpt4 key购买 nike

我有一个表需要重新格式化。该表如下所示:

date   ItemID   NewPrice   Sale Amount
1-1 1 5 3
1-1 2 8 2
1-1 3 3 5
1-2 1 6 4
1-2 3 4 3
1-3 2 7 2
1-3 3 2 1

我想要重新制定的第一个表格如下所示:

date   item_1    item_2    item_3
1-1 3 2 5
1-2 4 0 3
1-3 0 2 1

商品 ID 成为列名称,值是销售额。棘手的是,有些天,某些项目没有记录,就像 1-2 中的项目 2 没有项目记录一样。此时,销售金额应填写为0。

我想重新制定的第二个表如下所示:

date     item_1     item_2     item_3
1-1 5 8 3
1-2 6 8 4
1-3 6 7 2

所以我想要做的事情是使用 item_id 作为列,并使用 NewPrice 作为每个日期的值。

棘手的是,每天总有一些商品没有出现,所以当天该商品没有 NewPrice。在这种情况下,NewPrice 应该是最后一天的 NewPrice。

最佳答案

这是第一部分的基本 R 解决方案:

xtabs(`Sale Amount` ~ date + ItemID, DF)
## ItemID
## date 1 2 3
## 1-1 3 2 5
## 1-2 4 0 3
## 1-3 0 2 1

对于第二部分,我们在动物园中使用 na.locftapplyna.rm = FALSE 是为了防止第一个日期为 NA。在这种情况下,我们将其保留为 NA。

library(zoo)

na.locf(tapply(DF$NewPrice, DF[c("date", "ItemID")], c), na.rm = FALSE)
## ItemID
## date 1 2 3
## 1-1 5 8 3
## 1-2 6 8 4
## 1-3 6 7 2

注意:可重现形式的输入 DF 为:

Lines <- "date   ItemID   NewPrice   'Sale Amount'
1-1 1 5 3
1-1 2 8 2
1-1 3 3 5
1-2 1 6 4
1-2 3 4 3
1-3 2 7 2
1-3 3 2 1"
DF <- read.table(text = Lines, header = TRUE, check.names = FALSE)

关于r - dcast 中的自定义聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37770965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com