2017-05-05 74 views
-1

选择,我有以下R代码里面R数据表的概率

> z1 <- sample(9, 50, replace=T) 
> z2 <- sample(10:100, 100, replace=T) 
> z3 <- c(z1, z2) 
> dt <- data.table(z3) 
> dt 
    z3 
    1: 9 
    2: 7 
    3: 7 
    4: 2 
    5: 5 
--- 
146: 56 
147: 91 
148: 83 
149: 72 
150: 40 

我要选择我在我的数据表的培训和测试行,使得行60%的训练数据。这是60%* 150 = 90

在这些90的,我想选择从0-9 30个随机行和剩余部分60随机行从10至100。

是否可以使用该数据.table一行可以做到这一点吗?

回答

0

我不知道单线解决方案。我会这样做:

test.inds <- c(sample(length(z1), 30), sample(length(z2), 60)+50) 
test.dt <- dt[test.inds] 
train.dt <- dt[-test.inds]