如何根据唯一值分割列车和测试数据集?

时间:2014-06-30 11:15:53

标签: r machine-learning

我有一个庞大的数据集,唯一标识符是MAC地址。 MAC的格式为00-00-0C-12-43-02。我也有日期作为属性。目前我是 根据日期列拆分数据集。我正在使用的代码如下,这是有效的。

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是我的数据集,第5列是日期列。

现在我的要求是按MAC地址拆分数据集。但它不起作用。 由于它是一个因子值,我无法将因子值与日期值进行比较,如上所述。有没有不同的方法来做到这一点?

2 个答案:

答案 0 :(得分:0)

创建data.frame使用

data.frame(data, stringsAsFactors=FALSE)

或将因子更改为字符串(未测试)

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

然而这两种解决方案都需要更多内存...... 如果这是一个问题,您可以在仅进行比较时使用as.character()投射,而不是更改data.frame

答案 1 :(得分:0)

显然,由于您没有发布数据,我无法对此进行测试,但您可以尝试sample_frac中的dplyr

library(dplyr)

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

date.column替换为日期列的名称,将MAC.column替换为您的MAC地址列。