1

您好我正在尝试使用 ffbase 包的重复函数和以下代码从包含日期的 ff 向量中删除重复项:

v1 <- c("24-Mar-94", "24-Mar-94", "27-Mar-94", "28-Jun-1986", "29-Jul-1988", "28-Jun-1986", "15-Jan-1999", "13-Jan-1999")
v1.d <- as.Date(v1, format="%d-%b-%y")
v1.ff <- as.ff(v1.d)
v2 <- v1.ff[!duplicated(v1.ff)]

但是我收到以下错误:

Error in UseMethod("as.hi") : 
  no applicable method for 'as.hi' applied to an object of class "Date"

有没有办法解决这个问题而不必先将 v2 向量强制为 ram 对象?

4

2 回答 2

1

尝试这个:

library(ff)
v1 <- c("24-Mar-94", "24-Mar-94", "27-Mar-94", "28-Jun-1986", "29-Jul-1988", "28-Jun-1986", "15-Jan-1999", "13-Jan-1999")
v1.d <- as.Date(v1, format="%d-%b-%y")
v1.ff <- as.ff(v1.d)
v2 <- v1.ff[ !duplicated(v1.ff[,])  ]

输出:

> v1.d
[1] "1994-03-24" "1994-03-24" "1994-03-27" "2019-06-28" "2019-07-29" "2019-06-28" "2019-01-15" "2019-01-13"
> v2
[1] "1994-03-24" "1994-03-27" "2019-06-28" "2019-07-29" "2019-01-15" "2019-01-13"

它已经过重复数据删除。

ff对象需要特别切片/子集,以便在它们上适当地使用函数。其中一种方法是上面使用[,]or [](对于这个,因为它是一个向量),以便创建一个包含所有元素的向量,然后duplicated在其上使用。

于 2014-12-23T11:53:54.243 回答
0

使用 sapply 仅先获取唯一日期,然后再转换为 ffbase 对象

library(ffbase)
v1 <- c("24-Mar-94", "24-Mar-94", "27-Mar-94", "28-Jun-1986", "29-Jul-1988", "28-Jun-1986", "15-Jan-1999", "13-Jan-1999")
v1<-sapply(v1,unique)
v1.d <- as.Date(v1, format="%d-%b-%y")
v1.ff <- as.ff(v1.d)
于 2014-12-23T11:27:53.923 回答