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),]
他に必要な情報があれば教えてください、
乾杯、
ロルカン