Divida os dados aleatoriamente por critério em um conjunto de dados de treinamento e teste usando R
Gidday,
Estou procurando uma maneira de dividir aleatoriamente um quadro de dados (por exemplo, divisão 90/10) para testar e treinar um modelo, mantendo um certo critério de agrupamento.
Imagine que eu tenho um quadro de dados como este:
> test[1:20,]
companycode year expenses
1 C1 1 8.47720
2 C1 2 8.45250
3 C1 3 8.46280
4 C2 1 14828.90603
5 C3 1 665.21565
6 C3 2 290.66596
7 C3 3 865.56265
8 C3 4 6785.03586
9 C3 5 312.02617
10 C3 6 760.48740
11 C3 7 1155.76758
12 C4 1 4565.78313
13 C4 2 3340.36540
14 C4 3 2656.73030
15 C4 4 1079.46098
16 C5 1 60.57039
17 C6 1 6282.48118
18 C6 2 7419.32720
19 C7 1 644.90571
20 C8 1 58332.34945
O que estou tentando fazer é dividir esse quadro de dados em um conjunto de treinamento e teste usando um critério de divisão definido. Usando os dados fornecidos, desejo dividir os dados de uma maneira que as empresas não se misturem nos dois quadros de dados. O conjunto de dados 1 contém empresas diferentes do conjunto de dados 2.
Imagine uma divisão 90/10, uma divisão ideal seria assim:
> data_90split
companycode year expenses
4 C2 1 14828.90603
12 C4 1 4565.78313
13 C4 2 3340.36540
14 C4 3 2656.73030
15 C4 4 1079.46098
16 C5 1 60.57039
5 C3 1 665.21565
6 C3 2 290.66596
7 C3 3 865.56265
8 C3 4 6785.03586
9 C3 5 312.02617
10 C3 6 760.48740
11 C3 7 1155.76758
17 C6 1 6282.48118
18 C6 2 7419.32720
1 C1 1 8.47720
2 C1 2 8.45250
3 C1 3 8.46280
> data_10split
companycode year expenses
20 C8 1 58332.34945
19 C7 1 644.90571
Espero ter apontado claramente o que estou procurando. Obrigado pelo seu feedback!