有一个带有数据的数据框
dat
cluster1 cluster2 cluster3 cluster4 cluster5 target.label
1 24 5 18 21 16 1
2 2 15 12 7 22 1
3 13 13 16 29 24 0
4 23 28 22 10 4 1
5 6 12 20 25 11 0
6 25 17 14 24 25 1
7 30 27 2 4 14 0
8 11 2 21 6 9 0
9 20 20 29 17 10 1
10 7 30 25 11 15 0
11 19 8 15 8 18 0
12 3 18 1 16 26 0
13 17 9 23 14 8 0
14 5 6 5 22 19 0
15 9 19 9 12 20 1
16 21 3 3 13 23 1
17 10 16 4 26 2 1
18 18 4 28 3 6 0
19 28 24 7 20 12 0
20 8 11 11 23 7 1
21 15 14 6 27 27 0
22 26 29 26 28 29 1
23 16 1 10 2 17 0
24 1 7 17 15 21 0
25 27 23 30 5 13 1
26 12 22 19 9 30 1
在数据中,我们有簇的列,每个簇的范围为 1 到 30,最后一列的目标值可以为 0 或 1
你需要在整个样本中找到至少重复10次的这样的线,并且在每个找到的重复的相同组中,target.label中“1”的数量相对于“0”必须超过70%
像这样
cluster1 cluster2 cluster3 cluster4 cluster5 target.label
1 24 5 18 21 16 1
2 24 5 18 21 16 1
3 24 5 18 21 16 0
4 24 5 18 21 16 1
5 24 5 18 21 16 1
6 24 5 18 21 16 1
7 24 5 18 21 16 1
8 24 5 18 21 16 0
9 24 5 18 21 16 1
10 24 5 18 21 16 1
.....
.....
......
这是找到的大于零的相同行......
这是如何实现的,重要的是它要尽可能快,因为会有很多这样的计算
这是一个更优雅的解决方案。最重要的是,只使用 packages
dplyr和tidyr,这可能确保了最大的执行速度。代码中的所有进一步注释。下面是解决问题的代码片段。检查。