我在R中读到了一个大型数据集
我想在其上应用Unique()
函数,以便我可以更好地使用它,但是当我尝试这样做时,我得到了这个提示:
clients <- unique(clients)
Error: cannot allocate vector of size 27.9 Mb
所以我试图通过这样做逐部分地应用这个功能:
clientsmd<-data.frame()
n<-7316738 #Amount of observations in the dataset
t<-0
for(i in 1:200){
clientsm<-clients[1+(t*round((n/200))):(t+1)*round((n/200)),]
clientsm<-unique(clientsm)
clientsmd<-rbind(clientsm)
t<-(t+1) }
但我明白了:
Error in `[.default`(xj, i) : subscript too large for 32-bit R
我被告知我可以使用“ff”或“bigmemory”(或任何其他)等软件包更容易,但我不知道如何将它们用于此目的。
我感谢任何方向,是告诉我为什么我的代码不起作用,或者说我怎么能利用这个软件包。
答案 0 :(得分:1)
客户端是data.table的data.frame吗?与data.frame
相比, data.table 可以处理大量数据library(data.table)
clients<-data.table(clients)
clientsUnique<-unique(clients)
或
duplicateIndex <-duplicated(clients)
将提供重复的行。
答案 1 :(得分:1)
如下所示增加内存限制,然后尝试执行。
memory.limit(4000) ## windows specific command
答案 2 :(得分:0)
您可以使用dplyr包中的不同功能。
功能 - df %>% distinct(ID)
其中ID在您的数据框中是唯一的。