您好我正在尝试使用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对象?
答案 0 :(得分: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
个对象需要特别切片/子集才能适当地使用它们的功能。其中一种方法是上面使用[,]
或[]
(对于这个,因为它是矢量),以便创建包含所有元素的向量,然后使用duplicated
在它上面。
答案 1 :(得分: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)