gpt4 book ai didi

R 根据二次场条件获取数据帧上的唯一记录

转载 作者:行者123 更新时间:2023-12-05 01:14:45 25 4
gpt4 key购买 nike

更新和简化

我有一个非常大的表(约 700 万条记录),其结构如下。

temp <- read.table(header = TRUE, stringsAsFactors=FALSE,
text = "Website Datetime Rating
A 2007-12-06T14:53:07Z 1
A 2006-07-28T03:52:26Z 4
B 2006-11-02T11:06:25Z 2
C 2007-06-19T06:56:08Z 5
C 2009-11-28T22:27:58Z 2
C 2009-11-28T22:28:13Z 2")

我要检索的是每个网站具有最高评级的独特网站:
Website    Rating
A 4
B 2
C 5

我尝试使用 for 循环,但它太慢了。有没有其他方法可以实现这一目标。

最佳答案

 do.call( rbind, lapply( split(temp, temp$Website) , 
function(d) d[ which.max(d$Rating), ] ) )
Website Datetime Rating
A A 2006-07-28T03:52:26Z 4
B B 2006-11-02T11:06:25Z 2
C C 2007-06-19T06:56:08Z 5

由于您的 'Datetime' 变量实际上似乎既不是 Date 也不是 datetime 对象,您应该首先转换为 Date 对象。
which.max将选择最大的第一个项目。
>  which.max(c(1,1,2,2))
[1] 3

所以阿难在这方面的警告可能是不正确的。如果机器内存适中,数据表方法肯定会更快,并且也可能成功。上面的方法可以沿途进行多次复制,data.table 函数不需要复制那么多。

关于R 根据二次场条件获取数据帧上的唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13890669/

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