Страница 4 из 5

Re: Выбрать с массива определенное кол-во строк зная начальн

Добавлено: 07 ноя 2016, 15:23
mnml
Artem.spb, а по поводу массива выше вы видете что даты хаотично расположены, как быть в этом случае?

Re: Выбрать данные из 2d массива

Добавлено: 07 ноя 2016, 20:47
Artem.spb
mnml писал(а):Задача выбрать все строки из 2D массива по дате из первого столбца с "10.10.2016" - по "1.11.2016" (т.е. и промежуточные даты тоже 10,11,12,13 и так далее до первого числа следующего месяца)
Прошу выручайте! Спасибо!
и что же тут не получилось?
Untitled-1.png
ответ уже дан, голову сложно включить и выполнить последнее действие? перевести строки в числа и отсортировать
Artem.spb писал(а):
mnml писал(а):вот блин задача, я не пойму как сделать правильную сортировку по дате если число начинаеться не с нуля (04.10.2016), с 4.10.2016 ....
из-за этого дата с числом 27.10.2016 отображаеться после сорта выше сем за 4.10.2016
например, так
converce.png
converce.png (11.18 КБ) 9422 просмотра

Re: Выбрать с массива определенное кол-во строк зная начальн

Добавлено: 07 ноя 2016, 21:08
Artem.spb
mnml писал(а):Artem.spb, а по поводу массива выше вы видете что даты хаотично расположены, как быть в этом случае?
не вижу, потому что массив пустой.
В1) отсортировать массив, найти границы диапазона и взять его.
в2) (проще) в цикле просмотреть каждую строку. Если дата в рамках диапазона (например, ф-ия inRange), взять эту строку в новый массив.

Re: Выбрать с массива определенное кол-во строк зная начальн

Добавлено: 09 ноя 2016, 11:52
Shurik_85
в2) (проще) в цикле просмотреть каждую строку. Если дата в рамках диапазона (например, ф-ия inRange), взять эту строку в новый массив.
вряд ли второй вариант проще, всё равно же отсортировать придётся, либо до проверки каждой строки на соответствие диапазону, либо получившийся новый массив из подходящих строк, потому что нет гарантии, что в исходном массиве строки в порядке возрастания даты. Если конечно подразумевается задача вывода искомых строк в порядке возрастания даты, а не просто вывода искомых строк.
Так что ме судя по всему так не кто и не поможет с моей проблемой, потому что я так и не решил эту задачу!
Если на пальцах, то примерно так (КАК ВАРИАНТ):
1. формируете новый массив из (например) кластеров, в которых первый (например) элемент - это дата записи, преобразованная в число или Time Stamp, а другой элемент - вся строка целиком.
2. сортируете массив кластеров по возрастанию первого в нашем случае, элемента (каким угодно способом).
3. зная необходимый диапазон дат, находите элементы массива, удовлетворяющие условиям поиска (можно "запомнить" индексы в переменную, можно вывести в отдельный массив).
4. выводите в отдельный массив строк вторые компоненты кластеров (строки целиком), удовлетворяющих условиям поиска, (определённые в п.3). Это и будет искомый массив, в котором строки будут упорядочены по возрастанию даты.
Выполнение каждого шага описывали ранее, работа с кластерами сводится к использованию функций Bundle (Budle By Name) и Unbundle (Unbundle By Name). :rtfm:
Соберите уж всё вместе самостоятельно.
А то выглядит не как "помогите мне решить задачу", а как "решите мне задачу". :nono:

Re: Выбрать с массива определенное кол-во строк зная начальн

Добавлено: 09 ноя 2016, 12:25
Artem.spb
Shurik_85 писал(а):
в2) (проще) в цикле просмотреть каждую строку. Если дата в рамках диапазона (например, ф-ия inRange), взять эту строку в новый массив.
вряд ли второй вариант проще, всё равно же отсортировать придётся.
это зачем???
мой вариант делается в одно действие (в одном цикле) без промежуточных массивов
ваш вариант
Shurik_85 писал(а): 1. новый массив
2. сортируете массив
3. зная необходимый диапазон дат, находите элементы массива, удовлетворяющие условиям поиска (можно "запомнить" индексы в переменную, можно вывести в отдельный массив).
4. в отдельный массив
и интересно, как будете искать индексы (п3), в таком массиве:
1
2
3
6
7
8
25
1
4

нужны строки из диапазона 4..29?

Re: Выбрать с массива определенное кол-во строк зная начальн

Добавлено: 09 ноя 2016, 15:42
Shurik_85
Уважаемый Artem.spb, ЗДЕСЬ
вряд ли второй вариант проще,
имелось в виду СЛЕДУЮЩЕЕ: "вряд ли второй вариант проще ЧЕМ ПЕРВЫЙ, всё равно же отсортировать ПРИДЁТСЯ, либо до проверки каждой строки на соответствие диапазону, либо получившийся новый массив из подходящих строк, потому что нет гарантии, что в исходном массиве строки в порядке возрастания даты.ЕСЛИ конечно ПОДРАЗУМЕВАЕТСЯ задача вывода искомых строк В ПОРЯДКЕ ВОЗРАСТАНИЯ даты, А НЕ ПРОСТО ВЫВОДА искомых строк В ПОРЯДКЕ ИХ СЛЕДОВАНИЯ В ИСХОДНОМ МАССИВЕ".


А здесь:
и интересно, как будете искать индексы (п3), в таком массиве:
1
2
3
6
7
8
25
1
4

нужны строки из диапазона 4..29?
тоже всё не сложно. В предложенном мной варианте заведомо сделана оговорка "КАК ВАРИАНТ", на случай желающих покритиковать и сравнить с ЗАВЕДОМО более оптимальным, совершенным. А в пункте 2 алгоритма написано:
"2. сортируете массив кластеров ПО ВОЗРАСТАНИЮ ПЕРВОГО, в нашем случае, ЭЛЕМЕНТА (каким угодно способом)."

В УПОРЯДОЧЕННОМ массиве нет проблем с определением индексов (тоже кстати НАПРИМЕР, можно выделить индексы, можно не выделять, а сразу достать часть массива), или диапазона элементов 4..29, НАПРИМЕР.

Re: Выбрать с массива определенное кол-во строк зная начальн

Добавлено: 09 ноя 2016, 16:44
IvanLis
Уважаемые, истина рождается в споре, но тут ситуация совершенно иная, по крайней мере как мне видится.

Задача проста и очевидна, однако правила неоднозначны:
mnml 27 окт 2016, 14:18 писал(а):Всем привет!
Ребята прошу выручайте, помогите решить задачу!

Есть 1D массив - кол-во строк = 1115 - кол-во столбцов = 8
Задача: выбрать данные с этого массива зная - начальный = 16 и конечный = 350 индексы

Цель вывести в таблицу все строки по первому столбцу (дата)

Например: c 4.10.2016 по 27.10.2016

Спасибо!
Все зависит от цели, которую преследует автор.
Решение у задачи есть и неоднократно указывалось.

Либо он совершенно не хочет напрячь "серое вещество" и доделать сам, либо это банальный троллинг.
Дискуссия ведется с 27 октября, в теме уже больше 50 постов, из которых 18 написал автор :dntknw:

Выборка данных с массива по временному интервалу

Добавлено: 22 мар 2017, 12:37
mnml
Здравствуйте, уважаемые инженеры!
Столкнулся с проблемой следующего характера:

Есть файл CSV (Прикреплен ниже)
Задача: Выбрать с файла все строки с интервалом по времени , а именно с 08:00:00 по 20:00:00

Файл для считывания также прикреплен в низу!

Большое спасибо за помощь!

Re: Выборка данных с массива по временному интервалу

Добавлено: 22 мар 2017, 13:13
zxc_pavel
Просто выбрать строки >=8 и <=19

Re: Выборка данных с массива по временному интервалу

Добавлено: 22 мар 2017, 13:40
mnml
zxc_pavel? спасибо вам большое

Re: Выборка данных с массива по временному интервалу

Добавлено: 22 мар 2017, 13:45
mnml
Павел, подскажите, а если я укажу теперь не с 8 утра до 8 вечера, а с 8 вечера до 8 утра, он не отображает данные!
Не подскажите почему ?

Re: Выборка данных с массива по временному интервалу

Добавлено: 22 мар 2017, 14:48
IvanLis
mnml писал(а):Здравствуйте, уважаемые инженеры!
Столкнулся с проблемой следующего характера:

Есть файл CSV (Прикреплен ниже)
Задача: Выбрать с файла все строки с интервалом по времени , а именно с 08:00:00 по 20:00:00

Файл для считывания также прикреплен в низу!

Большое спасибо за помощь!
Вы правильно отметили, "инженеры", а не маразматики!
По этому не будем плодить пустые сущности.
Перечитываем тему с самого первого поста и следуем рекомендациям.

Re: Выбрать с массива определенное кол-во строк зная начальн

Добавлено: 23 мар 2017, 10:23
mnml
Так мне кто-то поможет с моим вопросом ?

Если делать выборкув массиве с интервалом 08:00:00 - 20:00:00 - все работает, а вот как реализовать выборку с интервалом 20:00:00 - 08:00:00 ?

Пожалуйста помогите!

Re: Выбрать с массива определенное кол-во строк зная начальн

Добавлено: 23 мар 2017, 10:59
mnml
Вот поподробнее :

Нужно:

Выбрать данные с 02.03.2017 - по 03.03.2017 с временным интервалом с 20:00:00 - 08:00:00

Получается мы должны получить данные:

за 02.03.2017 с 20:00:00 - 23:59:59
за 03.03.2017 с 00:00:00 - 07:59:59
за 03.03.2017 с 20:00:00 - 23:59:59

если сделать <8 или >=20 то получается программа выдерает данные с 00:00:00 - 07:59:59 - за второе число, а это уже другая смена с 1-ого числа по 2-ое число

Как это реализовать ?

Пожалуйста помогите!

Re: Выбрать с массива определенное кол-во строк зная начальн

Добавлено: 23 мар 2017, 12:35
mnml
Так что есть у кого, кие-то мысли ?
Прикрепляю проект целиком для наглядного примера!