2014-06-30 5 views
0

J'ai un énorme ensemble de données, où l'identifiant unique est l'adresse MAC. Le format de MAC est 00-00-0C-12-43-02. J'ai aussi la date en tant qu'attribut. Actuellement, je suis fractionnement de l'ensemble de données en fonction de la colonne de date. Le code que j'utilise est ci-dessous, qui fonctionne.Comment diviser un train et tester des jeux de données en fonction de valeurs uniques?

set.seed(100)  
Date <- data.frame(unique(Clean_Data[,5]))  
dat_len <- length(unique(Clean_Data[,5]))  
Date_Split <- as.integer(dat_len*.70)  
train_ind <- Clean_Data[,5] <= Date[Date_Split+1,]  
test_ind <- !train_ind  
training<- Clean_Data[train_ind,]  
testing <- Clean_Data[test_ind,]  

Clean_Data est mon ensemble de données, la 5ème colonne est la colonne de date.

Maintenant, mon exigence est de diviser l'ensemble de données par adresse MAC. Mais ça ne fonctionne pas. Puisqu'il s'agit d'une valeur de facteur je ne pourrais pas comparer les valeurs de facteur avec les valeurs de date comme ci-dessus. Y a-t-il une manière différente de faire ceci?

Répondre

0

à la création de votre data.frame utilisent

data.frame(data, stringsAsFactors=FALSE) 

ou de modifier les facteurs dans la chaîne (non testé)

Clean_Data[columnNumberOfMAC]=as.character(Clean_Data[columnNumberOfMAC]) 

cependant, les deux solutions, il faudra plus de RAM ... si ce est un problème que vous pouvez utiliser le casting as.character() en comparant seulement, au lieu de changer le data.frame

0

Évidemment, je ne peux pas tester ce péché CE vous n'avez pas poster les données, mais vous pouvez essayer de sample_fracdplyr:

library(dplyr) 

Clean_Data %>% 
    group_by(date.column, MAC.column) %>% 
    sample_frac(., 0.7) 

Remplacer date.column avec le nom de votre colonne de date et MAC.column avec votre colonne d'adresse MAC.

Questions connexes