Моя цель состоит в том, чтобы написать функцию в R, которая принимает в качестве входных данных кадр данных и возвращает его «наилучшее квадратное подмножество».
Под лучшим квадратным подмножеством я подразумеваю, что выходные данные должны подтвердить следующее:
- Все ячейки / элементы выше 2000
- В нем столько ячеек / элементов, сколько возможно
- В случае связей (2 кадра данных, которые соответствуют вышеуказанным критериями содержат одинаковое количество ячеек) вернем тот, у которого наибольшая сумма ячеек / элементов
Давайте рассмотрим три следующих примера:
example1 <- structure(list(Afternoon = c(20800L, 15254L, 17426L, 4391L, 39194L
), Evening = c(21679L, 0L, 2973L, 37L, 435L), Morning = c(0L,
3726L, 0L, 0L, 0L)), .Names = c("Afternoon", "Evening", "Morning"
), row.names = c("Friday", "Monday", "Thursday", "Tuesday", "Wednesday"
), class = "data.frame")
example2 <- structure(list(Afternoon = c(1227364L, 219402L, 3L, 0L, 530891L,
153124L, 281788L), Evening = c(570618L, 167216L, 31L, 10L, 88702L,
161006L, 42L), Morning = c(0L, 121775L, 0L, 0L, 0L, 25133L, 270162L
)), .Names = c("Afternoon", "Evening", "Morning"), row.names = c("Friday",
"Monday", "Saturday", "Sunday", "Thursday", "Tuesday", "Wednesday"
), class = "data.frame")
example3 <- structure(list(Afternoon = c(20800L, 258L, 300L, 563L, 2000L
), Evening = c(21679L, 0L, 2973L, 37L, 435L), Morning = c(0L,
3726L, 0L, 0L, 0L)), .Names = c("Afternoon", "Evening", "Morning"
), row.names = c("Friday", "Monday", "Thursday", "Tuesday", "Wednesday"
), class = "data.frame")
Это выглядит так:
> example1
Afternoon Evening Morning
Friday 20800 21679 0
Monday 15254 0 3726
Thursday 17426 2973 0
Tuesday 4391 37 0
Wednesday 39194 435 0
> example2
Afternoon Evening Morning
Friday 1227364 570618 0
Monday 219402 167216 121775
Saturday 3 31 0
Sunday 0 10 0
Thursday 530891 88702 0
Tuesday 153124 161006 25133
Wednesday 281788 42 270162
> example3
Afternoon Evening Morning
Friday 20800 21679 0
Monday 258 0 3726
Thursday 300 2973 0
Tuesday 563 37 0
Wednesday 2000 435 0
Функция, которую я ищу, должна подставить вышеупомянутые 3 примера в следующие 3 соответственно:
> output1
Afternoon
Friday 20800
Monday 15254
Thursday 17426
Tuesday 4391
Wednesday 39194
Оценка / площадь квадрата равна 5. Все остальное будетбыть меньше.Например, выбор пятницы, вечернего вечера четверга даст 4
> output2
Afternoon Evening
Friday 1227364 570618
Monday 219402 167216
Thursday 530891 88702
Tuesday 153124 161006
Здесь кто-то первым подумал бы выбрать все время понедельника, вторника и среды и получить оценку 9. Однако в средупо вечерам 42 подтверждает первый критерий.Понедельник и вторник во все дни и часы дают оценку / площадь 6
> output3
Afternoon Evening
Friday 20800 21679
Здесь у нас есть два возможных квадрата, которые подтверждают первые 2 критерия: пятница днем и вечером или пятница и среда днем.Мы должны сделать первый выбор, так как сумма внутри ячеек выше, чем во втором случае.Это правило применяется только в случае галстуков.