gpt4 book ai didi

r - data.table 中的哪些组共享一组相应的日期

转载 作者:行者123 更新时间:2023-12-03 21:33:39 27 4
gpt4 key购买 nike

例子

set.seed(2016)
dt <- data.table(
Grp = sample(1000, 1000000, replace=TRUE),
Date = as.Date("2016-1-1") + sample(365, 1000000, replace=TRUE)
)
dt <- unique(dt)

dt[order(Grp, Date)]
Grp Date
1: 1 2016-01-02
2: 1 2016-01-03
3: 1 2016-01-05
4: 1 2016-01-06
5: 1 2016-01-07
---
341526: 1000 2016-12-27
341527: 1000 2016-12-28
341528: 1000 2016-12-29
341529: 1000 2016-12-30
341530: 1000 2016-12-31

我如何知道哪些(如果有)组共享完全相同的日期集?我想我可以 dcast数据然后搜索匹配的行,但有更好的方法吗?

最佳答案

正如@Frank 指出的那样,您的示例实际上不包含任何示例。

我认为您最好的选择可能如下所示:

dt_agg = dt[order(Date), .(dates = list(Date), count = .N), by = Grp]
setkey(dt_agg, count)

dt_agg[ , if (.N > 1L && any(duplicated(setDT(transpose(dates))))) .SD,
by = count]

关键效率(我认为)是不要打扰运行比较,除非两个 Grp s 具有相同数量的唯一 Date s 放在首位(因此按 count 分组)。

count , 实际弄清楚是哪个 Grp s 包含相同的集合 Date s 我不太自信(同样,代码原样并没有完全指出哪个 Grp 是相同的,但我认为这与此处提供的代码相去甚远。

无论如何,这段代码几乎立即在我的机器上运行,因此很难评估效率。

关于r - data.table 中的哪些组共享一组相应的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39422912/

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