使用R将数据按标准随机拆分为训练和测试数据集
吉迪 我正在寻找一种随机分割数据帧(例如90/10分割)的方法,用于测试和训练保持一定分组标准的模型 假设我有这样一个数据框:使用R将数据按标准随机拆分为训练和测试数据集,r,split,dataframe,random-sample,R,Split,Dataframe,Random Sample,吉迪 我正在寻找一种随机分割数据帧(例如90/10分割)的方法,用于测试和训练保持一定分组标准的模型 假设我有这样一个数据框: > test[1:20,] companycode year expenses 1 C1 1 8.47720 2 C1 2 8.4525
> 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
> 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
我试图做的是使用定义的分割标准将这个数据帧分割成一个训练集和一个测试集。使用提供的数据,我希望以一种不让公司在两个数据框中混淆的方式分割数据。数据集1包含与数据集2不同的公司
想象一个90/10的分割,一个理想的分割是这样的:
> 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
> 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
我希望我清楚地指出我在寻找什么。
谢谢你的反馈 假设您所需的组没有任何条件,以下内容将随机将您的数据帧分成90%和10%的分区(存储在列表中): 产生:
$`FALSE`
companycode year expenses
10 C3 6 760.4874
12 C4 1 4565.7831
$`TRUE`
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
11 C3 7 1155.76758
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
comps by“条件是我想保留$companycode和$year的数据分组标准”,您的意思是想在两个拆分中保留整个数据帧吗?或者,您想对90行中哪些行可以进入与10行中哪些行可以进入设置一个约束?您能澄清一下吗?请想保留$companycode和$year的数据分组标准。
?@BrodieG我的意思是设置一个约束。它应该是分开的,为每个公司保留行顺序,然后按公司随机分开。我仍然很难理解这个限制。@BrodieG我也有这个困难的时候..完美而简单。多谢各位!这并没有达到用户的要求:在您的解决方案中,C3和C4同时出现在两个集合中。