Удалить столбцы в r studio

Обновлено: 07.07.2024

У меня здесь длинный SQL (с объяснительным планом) . Удаление 5 столбцов из 200 столбцов сделало этот SQL возвращенным за 20 секунд. Но как только эти столбцы добавляются обратно-запрос зависает. Я заметил, что план объяснения почти такой же, за исключением того, что после добавления обратно.

В HBase вызов метода DeleteColumn(), то есть, по существу, изменение схемы семейства столбцов или удаление семейств столбцов приведет к простою кластера HBase?

Предполагая, что у вас есть что-то вроде:

Кстати, вы также можете сделать:

С dplyr вы могли бы сделать это так:

Это удаляет все столбцы между столбцами "M50" и "M100".

Другой вариант, который не зависит от порядка столбцов, заключается в использовании

Более красноречиво, без использования каких-либо внешних пакетов или дополнительных вызовов функций, просто используйте логические подмножества R:

Мы можем назначить столбцы NULL в data.table

Если нам нужно подмножество,

Похожие вопросы:

В R studio, как я могу получить одно среднее значение из нескольких столбцов с условной логикой для одного из столбцов? Например, у меня есть набор данных под названием 'test' из следующих 5.

Мне интересно, есть ли хороший способ удалить несколько столбцов из нескольких разных наборов данных в R. У меня есть набор данных, который выглядит следующим образом: RangeNumber Time Value Quality.

Я поднабор в dataframe соответствии с несколькими критериями на несколько столбцов. Я выбираю строки в dataframe, которые содержат любое из нескольких значений, определенных в векторе criteria в.

У меня здесь длинный SQL (с объяснительным планом) . Удаление 5 столбцов из 200 столбцов сделало этот SQL возвращенным за 20 секунд. Но как только эти столбцы добавляются обратно-запрос зависает. Я.

В HBase вызов метода DeleteColumn(), то есть, по существу, изменение схемы семейства столбцов или удаление семейств столбцов приведет к простою кластера HBase?

У меня есть фрейм данных R с длинными именами столбцов. Поэтому, когда я печатаю фрейм данных, он слишком широк. Есть ли простой способ вывести фрейм данных на экран с именами колонов, появляющимися.

Я пытаюсь манипулировать рядом data.tables аналогичными способами и хотел бы написать функцию для достижения этой цели. Я хотел бы передать параметр, содержащий список столбцов, в которых будут.

У меня есть большой набор данных, и я использовал splitting , чтобы сделать данные более доступными. В итоге я получил

250 шпагата. В результате каждое разделение имеет разное количество пустых.

У меня есть несколько текстовых файлов, состоящих из 18 или 20 столбцов. Я хотел бы связать все файлы вместе, но для этого мне нужно удалить первые два столбца в файлах, состоящих из 20 столбцов.


Фрейм данных - это двумерная (двумерная) массивоподобная структура, в которой принимаются разные типы данных, такие как символы, цифры и т. Д. Кадр данных является подмножеством списка, каждый компонент которого имеет одинаковую длину. По сути, фрейм данных представляет собой таблицу, в которой каждый столбец содержит значения одной переменной, а каждая строка содержит один набор значений из каждого столбца.

Есть некоторые характеристики фрейма данных.

  • Имя столбца обязательно
  • Имена строк должны быть уникальными
  • Количество элементов в каждом столбце должно быть одинаковым

Шаги для создания фреймов данных в R

Давайте начнем с создания фрейма данных, который объясняется ниже,

Шаг 1: Создайте фрейм данных класса в школе.

Код:

tenthclass = data.frame(roll_number = c(1:5), Name = c("John", "Sam", "Casey", "Ronald", "Mathew"),
Marks = c(77, 87, 45, 68, 95), stringsAsFactors = FALSE)
print(tenthclass)

Когда мы запустим этот код, мы получим фрейм данных, подобный этому.

Выход:


Здесь, в нашем примере, фрейм данных очень мал, но в реальной жизни при решении проблемы у нас много данных. Таким образом, чтобы понять структуру данных, мы передаем функцию Str ().

Шаг 2: Мы добавляем строку ниже в наш код.

Код:

Когда мы запустим весь код, мы получим вывод.

Выход:


Приведенный выше вывод означает, что у нас есть 5 наблюдений за 3 переменными. Затем он объясняет тип данных каждой переменной. Как и в нашем примере, номер броска - целое число, имя - символ, а знаки пронумерованы.

Как только мы поймем структуру данных, мы передадим приведенный ниже код для более статистического понимания данных.

Шаг 3: Теперь мы будем использовать функцию summary ()

Код:

Выход:


Резюме обеспечивает лучшее понимание наших данных. Это скажет нам, чтобы означать, медиана, квартиль, Макс и Мин. Эти вещи помогут нам принять лучшее решение.

Как извлечь данные из фреймов данных в R?

Здесь мы продолжим описанный выше случай. Предположим, мы хотим знать имя ученика в десятом классе, просто имя. Так как же мы будем добывать?

Наш фрейм данных выглядит следующим образом.

roll_number Имя Метки

Чтобы просто получить имя в качестве вывода, мы передадим следующий код.

Код:

onlyname = tenthclass$Name
print(onlyname)

Выход:


Здесь, если мы нарушаем код, мы просто помещаем знак доллара между именем нашего фрейма данных и именем переменной, которую мы хотим вывести.

Теперь рассмотрим ситуацию, учитель хочет знать все о броске № 2, например, как его зовут и сколько он набрал.

Здесь нам нужно все о ролике № 2, поэтому мы передадим приведенный ниже код.

Код:

result_rollnumber2 = tenthclass(c(2), c(1:3)) print(result_rollnumber2)

Выход:


Развернуть в фреймах данных

Фрейм данных можно увеличивать и уменьшать в размере, добавляя или удаляя столбцы и строки.

1. Добавить строку

У нас есть два кадра данных. Один фрейм данных принадлежит десятому разделу класса A, а другой фрейм данных принадлежит десятому разделу класса B. Теперь эти различные разделы объединяются в один класс.

Пример № 1: класс 10 А

Код:

tenthclass_sectionA = data.frame(roll_number = c(1:5),
Name = c("John", "Sam", "Casey", "Ronald", "Mathew"),
Marks = c(77, 87, 45, 68, 95), stringsAsFactors = FALSE)
print(tenthclass_sectionA)

Выход:


Пример № 2: класс 10 B

Код:

tenthclass_sectionB = data.frame(roll_number = c(6:10), Name = c("Ria", "Justin", "Bon", "Tim", "joe"),
Marks = c(68, 98, 54, 68, 42), stringsAsFactors = FALSE)
print(tenthclass_sectionB)

Выход:


Пример № 3: функция rbind ()

Теперь мы должны объединить оба этих класса в один класс. Мы будем использовать функцию rbind () здесь. Единственное ограничение при добавлении новой строки - это то, что нам нужно ввести новые строки в той же структуре, что и существующий фрейм данных.

Код:

new_tenthclass = rbind(tenthclass_sectionA, tenthclass_sectionB)
print(new_tenthclass)

Выход:


2. Добавить столбец

Теперь рассмотрим случай, когда мы должны добавить данные о группе крови каждого учащегося в классе 10. Мы добавим для него новый столбец и назовем его «Blood_group».

Наш фрейм данных выглядит следующим образом.

Код:

tenthclass = data.frame(roll_number = c(1:5), Name = c("John", "Sam", "Casey", "Ronald", "Mathew"),
Marks = c(77, 87, 45, 68, 95), stringsAsFactors = FALSE)
print(tenthclass)

Выход:


Код:

Выход:


Удалить строку и столбец из фрейма данных

Для удаления строки и столбца из фрейма данных мы используем следующую реализацию кода.

1. Удалить столбец

Код:

Выход:


В этом кадре данных, если нам нужно удалить переменную группы крови (крайний правый столбец), мы передадим приведенный ниже код.

Код:

tenthclass$Blood_group = NULL
print(tenthclass)

Выход:


Обойдя команду NULL, мы можем напрямую удалить переменную из нашего фрейма данных.

2. Удалить строку

Код:

Выход:


Теперь рассмотрим ситуацию, когда нам не нужны метки Джона, поэтому мы должны удалить самый верхний ряд.

Код:

tenthclass = tenthclass(-1, ) print(tenthclass)

Выход:


Обновить данные в фрейме данных

Код:

Выход:


Код:

tenthclass$Marks(2) = 98
print(tenthclass)

Выход:


Вывод

Фреймы данных - очень распространенная форма постановки задачи. Это список переменных с одинаковым количеством строк с уникальными идентификаторами строк. Эта статья помогает нам узнать, как мы можем добавить строку, добавить столбец, удалить строку, удалить столбец фрейма данных, а также рассказывает, как мы можем обновить данные в фрейме данных.

Рекомендуемые статьи

Это руководство по фреймам данных в R. Здесь мы обсуждаем различные шаги для создания фреймов данных и как извлечь данные из фреймов данных в R. Вы также можете посмотреть следующие статьи, чтобы узнать больше:

Если у вас есть файл, который кто-то дает вам с 200 столбцами, и вы хотите сократить его до нескольких, необходимых для анализа, как вы поступите с этим? Одно решение предлагает преимущества перед другим?

Предполагая, что у нас есть фрейм данных со столбцами col1, col2 - col200. Если вы хотите только 1-100, а затем 125-135 и 150-200, вы можете:

Что-то еще я пропускаю? Я знаю, что это явно субъективно, но это одна из тех мрачных вещей, в которые вы можете погрузиться и начать делать это одним способом и впасть в привычку, когда есть намного более эффективные пути. Так же, как этот вопрос о который .

EDIT:

Или есть простой способ создать работоспособный вектор имен столбцов? name (dat) не печатает их с запятыми между ними, что вам нужно в приведенных выше примерах кода, поэтому, если вы распечатываете имена таким образом, у вас есть пробелы везде и вам нужно вручную ставить запятые . Есть ли команда, которая даст вам "col1", "col2", "col3", . в качестве вывода, чтобы вы могли легко получить то, что вы хотите?

Я использую оператор data.table ' := , чтобы мгновенно удалять столбцы независимо от размера таблицы.

Любое решение, использующее <- или subset , копирует всю таблицу. Оператор data.table ' := просто изменяет внутренний вектор указателей на столбцы на месте. Поэтому эта операция (почти) мгновенная.

Чтобы удалить отдельные столбцы, я просто буду использовать dat$x <- NULL .

Чтобы удалить несколько столбцов, но меньше, чем 3-4, я буду использовать dat$x <- dat$y <- dat$z <- NULL .

Более того, я буду использовать subset с отрицательными именами (!):

Для ясности я часто использую аргумент select в subset . С новыми людьми я узнал, что соблюдение минимального количества команд, которые они должны подобрать, помогает в принятии. По мере того как их навыки возрастают, увеличивается и их способность к кодированию. И подмножество - одна из первых команд, которые я показываю людям, когда нужно выбрать данные в рамках заданных критериев.

Я уверен, что это будет тестировать медленнее, чем большинство других решений, но я редко нахожусь в точке, где микросекунды имеют значение.

Используйте read.table с экземплярами colClasses "NULL", чтобы не создавать их в первую очередь:

Для больших файлов, которые я обычно получаю, я обычно не делаю этого в R. Я бы использовал команду cut в Linux для обработки данных до того, как они попадут в R. Это не критично R, просто предпочтение использовать некоторые очень простые инструменты Linux, такие как grep, tr, cut, sort, uniq и иногда sed & awk (или Perl), когда нужно что-то сделать с регулярными выражениями.

Другая причина использования стандартных команд GNU) заключается в том, что я могу передать их обратно источнику данных и попросить предварительно отфильтровать данные, чтобы я не получил посторонние данные. Большинство моих коллег компетентны с Linux, меньше знают R.

(Обновлено). Метод, который я хотел бы использовать в ближайшее время, состоит в соединении mmap с текстовым файлом и проверке данных in sit, а не считывании их вообще в ОЗУ. Я сделал это с C, и это может быть невероятно быстро.

Иногда мне нравится делать это, используя вместо этого идентификаторы столбцов.

as.data.frame (имена (ДФ))

Удаление столбцов "с" и "г"

Это особенно полезно, если у вас большие data.frames или длинные имена столбцов, которые вы не хотите вводить. Или имена столбцов, которые следуют за шаблоном, потому что тогда вы можете использовать seq () для удаления.

Вам не обязательно ставить "" вокруг строки или "", чтобы создать символьный вектор. Я считаю этот маленький трюк удобным:

Думал, что это действительно умно, составить список "не включать"

Можно использовать функцию setdiff :

Если нужно сохранить больше столбцов, чем удалить: предположим, что вы хотите удалить 2 столбца, скажем, col1, col2 из data.frame DT; Вы можете сделать следующее:

Если нужно удалить больше столбцов, чем сохранить: предположим, что вы хотите сохранить только col1 и col2:

Просто обращаюсь к редактированию.

@nzcoops, вы не нужны имена столбцов в векторе символов, разделенных запятыми. Вы думаете об этом неправильно. Когда вы делаете

вы создаете символьный вектор. _ , _ просто разделяет аргументы, принимаемые функцией c() , когда вы определяете этот вектор. names() и ​​аналогичные функции возврат символьный вектор имен.

Гораздо проще и менее подвержено ошибкам выбирать из элементов names(dat) , чем обрабатывать его вывод в разделенную запятыми строку, из которой вы можете вырезать и вставить.

Допустим, нам нужны столбцы _ col1 _ и _ col2 _, подмножество names(dat) , сохраняя только те, которые нам нужны:

Вы можете делать то, что хотите, но R всегда печатает вектор на экране в кавычках _ " _:

так что последнее может быть более полезным. Тем не менее, теперь вы должны вырезать и мимо этой строки. Гораздо лучше работать с объектами, которые возвращают то, что вы хотите, и использовать стандартные подпрограммы для сохранения того, что вам нужно.

Функция select() из dplyr мощна для поднабора столбцов. Смотрите _ ?select_helpers _ для списка подходов.

В этом случае, когда у вас есть общий префикс и порядковые номера для имен столбцов, вы можете использовать _ num_range _:

В более общем смысле вы можете использовать знак минус в select() для удаления столбцов, например:

Наконец, на ваш вопрос "есть ли простой способ создать работоспособный вектор имен столбцов?" - да, если вам нужно отредактировать список имен вручную, используйте dput , чтобы получить разделенный запятыми список в кавычках, которым вы можете легко манипулировать:

Если у вас уже есть вектор имен, который можно создать несколькими способами, вы можете легко использовать функцию подмножества для сохранения или удаления объекта.

В этом случае KEEP - это вектор имен столбцов, который предварительно создан. Например:

Редактирование таблиц в R

В прошлый раз мы говорили о том, как загрузить данные в среду R. Следующим важным этапом является их подготовка к визуализации и статистическому анализу. Для этого нам, как правило, необходимо внести некоторые изменения в таблицу, например: удалить столбец или строку, переименовать колонку, произвести сортировку или фильтрацию данных. Многие из этих операций можно сделать в Excel. Однако, зачастую возникают ситуации, когда необходимо изменить структуру или содержание таблицы прямо в ходе анализа. И вот тут у начинающих пользователей R могут возникнуть проблемы. В этой статье мы научимся их решать.

Структура таблицы и изменение типов данных

Лучший способ для закрепления новых знаний - это практика. Поэтому мы продолжим работать с таблицей физических данных студентов одного из военных вузов "voenvuz". Итак, загрузим знакомую уже нам таблицу в Rgui (таблицу можно скачать здесь).

Функции head и str

Для того, чтобы посмотреть правильно ли загрузились данные, введем команду head(voenvuz) , которая покажет первые 6 строчек нашей таблицы. Если все загрузилось нормально, то переходим к команде str(voenvuz) , которая выведет в консоль структуру таблицы.

Функция str R

Итак, в поле "data.frame" мы видим, что наша таблица состоит из 20 строк и 6 столбцов. Под ним располагается список названий столбцов, тип данных и первые шесть элементов каждого столбца. Обратите внимание, что колонки "Name" и "Rhesus.factor" сейчас хранят в себе категориальный тип данных (Factor), а остальные - целочисленный. Компьютер вычислил это автоматически, но в нашем случае - вычислил неверно. Прежде чем мы исправим типы этих данных, немного теоретической информации.

О типах данных

Почему важно правильно распознать тип данных в столбцах таблицы? Потому что при проведении статистических тестов, информация о типе данных учитывается и влияет на результат.

В языке R можно выделить 5 основных типов данных, хранящихся в столбцах таблицы:

  • числовой (numeric);
  • целочисленный (integer);
  • текстовый (character);
  • категориальный (Factor);
  • логический (logical).

Есть также комплексный (complex) и сырой (raw) типы данных, но они редко встречаются, и поэтому я о них здесь писать не буду. Пропущенные данные обозначаются как "NA" (от англ. not available - недоступно), и тогда R игнорирует их.

Изменим типы данных на практике

Посмотрим еще раз на таблицу. Логично предположить, что столбец "Name" с именами студентов не содержит никаких категорий, поэтому, преобразуем эту колонку в обычный текстовый тип данных:

Идем дальше, столбец "Age" был правильно идентифицирован как целочисленный. А вот столбцы "Height" и "Weight" являются скорее числовыми, т.к. могут содержать промежуточные значения, например 182.5. Переделаем их из типа Integer в тип Numeric:

Последнее, что нам нужно - это изменить тип данных в столбце "Blood.group". Каждый из студентов так или иначе имеет одну из 4 групп крови, соответственно, этот столбец содержит четыре категории: "1", "2", "3", "4". Другими словами, в нем должен находиться категориальный тип данных:

В итоге, повторив команду str(voenvuz) , мы должны получить вот такую картинку.

Меняем тип данных в R

Редактирование элементов таблицы

Иногда возникают ситуации, когда необходимо вставить в таблицу столбец или строку, изменить значение элемента или название колонки. Наша таблица - не исключение и нуждается в доработке.

Добавление строк

Добавим в таблицу данные о двух новых студентах: Иване и Олеге. Для этого необходимо создать новую структуру - список (list) , В список мы по порядку вносим параметры, совпадающие со структурой таблицы (напомню, что в кавычках мы пишем нечисловые типы данных):

После, при помощи функции rbind (от англ. row bind, что дословно означает "связать строчки") мы объединим эти два списка с нашей таблицей:

Добавление столбцов

Теперь у нас в таблице два Ивана и два Олега. В данном случае хорошо было бы прописать для каждого студента свой идентификационный номер (ID), чтобы не запутаться, кто есть кто. Для этого создадим структуру, которая называется вектор (последовательность элементов одного типа). В него мы запишем последовательность от 1 до 22, так, чтобы у каждого из наших 22 студентов был свой уникальный ID:

Теперь объединим наш вектор с таблицей, воспользовавшись функцией cbind (от англ. column bind):

Не забудьте поменять тип данных нового столбца на символьный:

В качестве еще одного примера добавления новых столбцов с данными в таблицу, рассчитаем индекс массы тела (BMI) для каждого студента. Для этого, мы воспользуемся новым способом: напишем математическую формулу индекса на языке R и присвоим ей новое имя столбца "BMI" внутри нашей таблицы:

Проверьте, что получилось, используя уже знакомые нам функции head и str

Удаление строк и столбцов

Существует относительно "универсальная формула" для удаления элементов таблицы: new.data <- my.data[ , ]
Для того, чтобы корректно ее использовать необходимо запомнить несколько правил:

  1. После имени таблицы пространство внутри квадратных скобок следует разделить на две части запятой.
  2. Все, что находится до запятой, относится к строчкам, все что после - к столбцам.
  3. Поставьте минус перед номером столбца или номером строки, которую собираетесь удалить.
  4. Если таких элементов несколько, используйте функцию c(. ) : внутри скобок перечисление элементов через запятую.

В нашем случае, удалять из таблицы ничего не надо, но я покажу пару примеров, назвав "укороченные" таблицы именами "trash1", "trash2", "trash3", "trash4":

Изменение имен столбцов и данных в ячейках:

Переименуем колонку "Rhesus.factor" на укороченное "Rhesus". Для этого нужно вызвать функцию names , написать в параметрах функции имя таблицы и номер столбца, и присвоить ему новое имя :

Изменение данные в ячейках таблицы не представляет особой сложности. В квадратных скобках прописываем координаты нужной ячейки (до запятой - строка, после запятой - столбец) и присваиваем новое значение:

Редактируем таблицу в R

После всех наших манипуляций мы должны получить вот такую таблицу данных:

Фильтрация и сортировка данных

В качестве примера, исключим из таблицы данных студентов, чей возраст больше 23 лет. Существует множество способов решения подобного рода задач, включая циклы if-else, for или while (о них будет написана отдельная статья). Однако в нашем случае хватит простого фильтра, основанного на логическом операторе "< wp-block-preformatted"> voenvuz.final <- voenvuz[voenvuz$Age <= 23, ]

Того же результата мы добьемся, если будем использовать логические операторы ">" (больше) и "!" (исключить):

Итак, мы получили финальную версию таблицы "voenvuz.final ". Осталось лишь упорядочить столбцы:

И произвести сортировку данных по имени студентов, используя функцию order :

Результат обработки данных R

После завершения редактирования таблицы, обновим имена строк, т.к. сейчас они не соответствуют действительности, и выведем таблицу на экран, введя имя таблицы в консоль:

Заключение

Описанные выше способы редактирования данных в таблице не уникальны, существует множество других методов и команд, позволяющих получить желаемый результат. Я рассказал лишь о наиболее простых и часто используемых. Для более детального ознакомления с этой темой я хотел бы порекомендовать два источника на английском языке:

  1. сайт http://stackoverflow.com/ (уже подробно разобраны тысячи вопросов по этой теме)
  2. книгу-справочник "R book" by Michael J. Crawley (легко найти бесплатную PDF версию в интернете).

Если у Вас возникли вопросы или проблемы с редактированием таблиц данных, Вы всегда можете оставить комментарий под этой статьей, и он не останется без внимания. А в качестве продолжения, читайте следующую статью, посвященную сохранению данных в среде R.

kod col.x col.y delta
1 00046949 1,000 1,000 2
2 00047069 3,000 3,000 2
3 00047070 19,000 19,000 2
4 00047071 49,000 49,000 2
5 00047072 21,000 21,000 2
356 CB128164 2,000 2
252 CB164884 1,000 2
Всем привет! Только начал изучать R и столкнулся с некой проблемой: Есть такая волшебная таблица. И задача, вывести в последний столбец разницу 2 и 3 го, и с учетом того что данные в последних строках NA, соответственно вывести в последний столбец NA2 или NA3, в зависимости от того где стоит NA. Проблема в том, что стандартные функции(о которых я еще мало знаю) удаляют строки с NA, а мне важно их сохранить и обработать.
Если у кого то будут мысли по теме, буду рад помощи. Да и еще, у меня типы данных факторы в первых трех столбцах, а последний число.

((ETH1567:0.07723012967,((ETH1478:0.03477412382,ETH1481:0.03998172409)100:0.01982264043,(LAV2470:0.04453502013,LAV2519:0.04666678739) и т.д. без пробелов.

Мне нужно извлечь блоки содержащие буквы и последующие цифры до знака двоеточия, т.е.: ETH1567 ETH1478 ETH1481 LAV2470 LAV2519

Я подобрал регулярку для этого: ([A-z]4*)

treenames <- grep("([A-z]6*)", tree, value = TRUE)

treenames
named character(0)

Перерыд весь stackoverflow и иже с ним, но ответа не нашел.
Буду благодарен за подсказку.

Здравствуйте, Данила! Вот одно из возможных решений Вашей задачи:

P.S. я мало анализирую текстовые данные, поэтому это решение вероятно не самое элегантное, но должно работать.

Отлично, все работает, большое спасибо!

Добрый день!
После преобразования матрицы в таблицу, провожу моделирование.
Выходит такая вещь:
Warning messages:
1: In log(b$y) : NaNs produced
2: In log(b$x1) : NaNs produced
3: In log(b$x2) : NaNs produced
4: In log(b$x4) : NaNs produced
5: In log(b$x5) : NaNs produced
6: In log(b$x6) : NaNs produced

Подскажите, пожалуйста, где ошибка? Голова кипит, не получается(

Доброго дня, Эсмира!

Сегодня все посмотрю и надеюсь смогу помочь ;)

Здравствуйте. Как пропустить заголовок таблицы; учесть, что заголовка нет?

В скобках функции read.table вставьте аргумент header = FALSE.

Здравствуйте! Подскажите как правильно оформить цикл и получить агрегированные данные из нескольких ресурсов гугл аналитики.

Потом я хочу взять в цикле каждый ресурс и получить агрегированные данные в объекте gaData по всем ресурсам функцией:

gaData <- get_ga(profileId = "resource_id",
start.date = "2019-09-01",
end.date = "2019-10-21",
metrics = "ga:sessions",
dimensions = "ga:date",
samplingLevel = "HIGHER_PRECISION",
max.results = 1000,
token = rga_auth)

Здравствуйте! Сходу ответить не смогу. Сейчас дописываю диссертацию, к сожалению совсем нет свободного времени.

Samoedd приветствую.
Вопрос
После расчетов на экране отображается таблица в таком формате

Qtr1 Qtr2 Qtr3 Qtr4
2000 119.28993 118.89396 118.10201 116.91410
2001 115.33021 114.48457 114.37718 115.00804
2002 116.37716 117.13394 117.27839 116.81051
2003 115.73031 114.20610 112.23790 109.82569
2004 106.96949 105.67921 105.95486 107.79644
2005 111.20394 112.48537 111.64071 108.66998

Сам пробовал искать ответ, но видимо это настолько просто, что об этом ни где не пишут. :-)
Заранее спасибо.

Сентябрь 13, 2019 в 11:55 Samoedd (Автор записи)

Здравствуйте, Alex! Извините, был в отпуске, не смог ответить. Ваш вопрос еще актуален или уже решен?

Читайте также: