关于 ff 数据帧的另一个问题,但希望这应该是我关于它们的最后一个问题。有一个尴尬的问题,但首先是代码:
fda<-data.frame(c(1,2),c(3,4))
colnames(fda)<-c("col1","col2")
fdb<-data.frame(c(3,7),c(1,5))
colnames(fdb)<-c("col1","col2")
fd<-rbind(fda,fdb)
fd<-data.frame(fd)
library(ff)
library(ffbase)
fd<-as.ffdf(fd)
a<-c(10,12,13,11)
b<-c(13,15,10,14)
fd$col3<-as.ff(a)
fd$col4<-as.ff(b)
fd
该表如下所示:
col1 col2 col3 col4
1 3 10 13
2 4 12 15
3 1 13 10
7 5 11 14
下面的代码删除了所有重复的行。
rm(fda)
rm(fdb)
fd$dup<-duplicated.ffdf(fd)
fdfin<-subset.ffdf(fd, fd$dup == "FALSE")
fdfin<-as.ffdf(fdfin[,-5])
fdfin
如果您看到第 1 行和第 3 行有点重复,但顺序略有不同。我需要对代码进行排序以使行匹配,然后应用上面的重复代码或一些替代代码来仅删除第 1 行或第 3 行。
这是一个约 12,000,000 行表的小样本,因此我需要使用 ff 或 ffbase 包来执行此操作。
以下适用于普通数据框,所以想知道如何使用 ff 函数来做同样的事情:
df<-temp1[,1:2] #temp1 is a data frame
df.sort<-t(apply(df,1,sort))
sortdup<-temp1[!duplicated(df.sort),]
让我知道是否需要更多信息,
干杯,
Lorcan