R studio формат даты
В этой статье перечислены поддерживаемые типы данных и преобразования типов данных при использовании функции интеграции R в службы машинного обучения SQL Server.
Базовая версия R
Службы SQL Server 2016 R и службы машинного обучения SQL Server с R согласуются с конкретными выпусками Microsoft R Open. Например, последний выпуск служб машинного обучения SQL Server 2019 построен на основе версии Microsoft R Open 3.5.2.
Чтобы просмотреть версию R, связанную с конкретным экземпляром SQL Server, откройте RGui в экземпляре SQL. Например, путь для экземпляра по умолчанию в SQL Server 2019 должен быть таким: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\R_SERVICES\bin\x64\Rgui.exe .
Это средство загружает базовую версию R и другие библиотеки. Сведения о версии каждого пакета приводятся в уведомлении, которое загружается при запуске сеанса.
Типы данных R и SQL
SQL Server поддерживает несколько десятков типов данных, а язык R поддерживает ограниченное число скалярных типов данных (числа, целые числа, комплексные числа, логические данные, символы, типы даты и времени и необработанные данные). Поэтому при каждом использовании данных из SQL Server в скриптах R данные могут быть неявно преобразованы в совместимый тип. Однако зачастую точное преобразование невозможно выполнить автоматически, и в результате возвращается ошибка, например "Необработанный тип данных SQL".
В этом разделе описываются предусмотренные явные преобразования, а также перечислены неподдерживаемые типы данных. Кроме того, приводятся некоторые рекомендации по сопоставлению типов данных между R и SQL Server.
Неявное преобразование типов данных
В следующей таблице показано, как меняются типы данных и значения, когда данные из SQL Server используются в сценариях R и затем возвращаются в SQL Server.
Типы данных, не поддерживаемые языком R
Следующие типы данных, поддерживаемые системой типов SQL Server, могут создавать проблемы при передаче в код R:
- типы данных, перечисленные в разделе Другое статьи, посвященной системным типам SQL: cursor, timestamp, hierarchyid, uniqueidentifier, sql_variant, xml, table
- все пространственные типы;
- image
Типы данных, которые могут быть преобразованы с ошибками
- Большинство типов datetime поддерживаются, за исключением типа datetimeoffset.
- Большинство числовых типов данных поддерживаются, но преобразования могут завершаться ошибкой для типов money и smallmoney.
- Поддерживается тип varchar, но так как SQL Server, как правило, использует формат Юникод, во всех возможных случаях рекомендуется применять nvarchar и другие типы текстовых данных в Юникоде.
- Функции библиотеки RevoScaleR, которые начинаются с префикса rx, могут обрабатывать двоичные типы данных SQL (например, binary и varbinary), но в большинстве случаев для этих типов требуется особая обработка. Большая часть кода R не поддерживает работу с двоичными столбцами.
Дополнительные сведения о типах данных SQL Server см. в статье Data Types (Transact-SQL) (Типы данных (Transact-SQL)).
Изменения типов данных между версиями SQL Server
Microsoft SQL Server 2016 и более поздних версий содержат улучшения преобразований типов данных и других операций. Большинство этих улучшений обеспечивают повышенную точность при работе с типами с плавающей запятой, а также незначительные изменения операций в классических типах datetime.
Эти улучшения доступны по умолчанию при использовании уровня совместимости базы данных 130 и выше. Однако при использовании другого уровня совместимости или подключении к базе данных с помощью более старой версии, точность чисел или других результатов может отличаться.
Дополнительные сведения см. в статье SQL Server 2016 improvements in handling some data types and uncommon operations (Улучшения SQL Server 2016 для обработки некоторых типов данных и нестандартных операций).
Предварительная проверка схем данных R и SQL
При получении данных из базы данных для использования в коде R всегда следует удалять столбцы, которые нельзя использовать в R, а также столбцы, бесполезные при анализе, например идентификаторы GUID (uniqueidentifier), метки времени и другие столбцы, используемые для аудита или данных журнала преобразований, созданных в рамках процессов извлечения, преобразования и загрузки.
Обратите внимание, что включение ненужных столбцов может значительно снизить производительность кода R, особенно если столбцы большого количества элементов используются как коэффициенты. Поэтому мы советуем использовать системные хранимые процедуры SQL Server и представления сведений для получения типов данных для данной таблицы заранее и устранения или преобразования несовместимых столбцов. Дополнительные сведения см. в статье о представлении информационной схемы в Transact-SQL.
Если определенный тип данных SQL Server не поддерживается языком R, но вам необходим доступ к столбцам этого типа в скрипте R, мы советуем использовать функции CAST и CONVERT (Transact-SQL). С их помощью вы сможете правильно преобразовать тип данных в скрипте R.
При использовании rxDataStep для удаления несовместимых столбцов во время перемещения данных учтите, что аргументы varsToKeep и varsToDrop не поддерживаются для типа источника данных RxSqlServerData.
Примеры
Пример 1: Неявное преобразование
В следующем примере показано преобразование данных при выполнении цикла приема-передачи между SQL Server и R.
Запрос получает ряд значений из таблицы SQL Server, а затем использует хранимую процедуру sp_execute_external_script для вывода значений при помощи среды выполнения R.
Результаты
Обратите внимание на использование функции str в R для получения схемы выходных данных. Эта функция возвращает следующую информацию:
На приведенном примере можно увидеть, что при выполнении этого запроса были выполнены следующие типы неявных преобразований.
Столбец C1. В ssNoversion этот столбец имеет тип SQL Server, в R — integer , а в выходном наборе данных — ssNoversion .
Преобразование типа не выполнялось.
Столбец C2. В ssNoversion этот столбец имеет тип SQL Server, в R — factor , а в выходном наборе данных — varchar(max) .
Обратите внимание, что тип выходных данных изменился. Любая строка из R (фактор или обычная строка) будет представлена как varchar(max) вне зависимости от длины строки.
Столбец C3. В ssNoversion этот столбец имеет тип SQL Server, в R — character , а в выходном наборе данных — varchar(max) .
Обратите внимание на преобразование типа данных. SQL Server поддерживает тип ssNoversion , но R — нет. Поэтому идентификаторы представляются в виде строк.
Столбец C4. Этого столбца нет в исходных данных. Он содержит значения, созданные сценарием R.
Пример 2. Динамический выбор столбцов с помощью R
В следующем примере показано, как использовать код R для проверки на наличие недопустимых типов столбцов. Приведенный ниже код получает схему указанной таблицы с помощью системных представлений SQL Server и удаляет все столбцы с заданным недопустимым типом.
Из списка date далее легко можно извлечь такие содержащиеся в нем элементы, как sec (секунды), min (минуты), hour (часы), mday (день месяца), mon (месяц), year (год), wday (день недели, начиная с воскресенья = 0), yday (день года, начиная с 1 января = 0), и isdst ("is daylight savings time in operation?" - логическая переменная, обозначающая, используется ли режим перехода на "зимнее" и "летнее" время; 1 если TRUE и 0 если FALSE ), например:
Используйте функцию unclass() в сочетании с unlist() для просмотра всего содержимого списка date :
Вычисления с датами и временем
- число + время;
- время - число;
- время1 - время2
- время1 "логический оператор" время2 (в качестве логического оператора могут использоваться == , != , <= , < , > или >= ).
t3<-as.POSIXlt("2010-09-22 08:30:30")
t4<-as.POSIXlt("2010-09-22 22:25:30")
t4-t3
Time difference of 13.91667 hours Еще проще разницу между двумя датами можно найти при помощи готовой функции difftime() (от difference - разница, и time - время):
Чтобы извлечь непосредственно количество дней из результата выполнения предыдущей команды используйте функцию as.numeric() :
Обратите внимание: в R отсуствует возможность для сложения двух дат.
Функция strptime()
Функция strptime() (от strip - раздевать, оголять, и time - время) позволяет извлекать даты и время из текстовых выражений класса POSIXlt или POSIXct (см. выше). При этом важно верно указать формат (при помощи аргумента format), в котором приведены временные величины. Приняты следующие условные обозначения для формата дат и времени (приведены наиболее часто используемые; детали доступны по команде ?strptime ):
Рассмотрим пример. Предположим, у нас имеется текстовый вектор, в котором хрянятся даты в формате программы Microsoft Excel: Требуется преобразовать эти текстовые выражения в даты формата R. Формат имеющихся Excel-дат таков, что сначала идет день месяца, затем порядковый номер самого месяца и, наконец, год с указанием века. Используя приведенные выше обозначения, принятые в R, этот формат можно представить в виде %d/%m/%Y . Тогда команда для преобразования Excel-дат в R-даты будет выглядеть следующим образом:
Вот еще один пример, в котором год приведен без указания века, а месяцы приведены в виде их сокращенных названий:
--
Основным источником для написания данной статьи послужил раздел "Dates and Times in R" из книги Майкла Кроули (Michael Crawley) "The R Book".
Временные ряды являются сердцем экономических и финансовых исследований. Наиболее часто здесь используются такие понятия, как темпы роста и прибыль.
В R есть несколько очень мощных пакетов, предназначенных для работы с временными рядами. В данной статье мы рассмотрим их возможности.
В начале любого скрипта R желательно сразу указать, сколько чисел после запятой вам требуется. Я предпочитаю два, но в определенных случаях может потребоваться большая точность. Во всех случаях мы также можем использовать для этого функцию round, например round(x, 5) - пять чисел после запятой для объекта "x".
> data <- data.frame(Date = c("12-12-2012", "13-12-2012", "14-12-2012", "16-12-2012","19-12-2012"), MktCap = c(110, 120, 130, 200, 180), PE = c(18, 18, 18.5, 19, 19))
> data
Date MktCap PE
1 12-12-2012 110 18.0
2 13-12-2012 120 18.0
3 14-12-2012 130 18.5
4 16-12-2012 200 19.0
5 19-12-2012 180 19.0
Несмотря на широкое применение и гибкость dataframe, многие важные операции при работе с временными рядами невозможно выполнить с использованием dataframe.
В R есть пакета, которые чаще всего используются для работы с временными рядами: ts (Timeseries) и xts(eXtensible Time Series). Во временных рядах всегда в наличии даты и значения индикатора, соответствующие датам.
Используя приведенную выше таблицу, мы можем получить дату в любом формате. Однако я предпочитаю конвертировать дату в другие форматы только в том случае, если это необходимо для отчета, поскольку функция "format" меняет класс вектора на "character", лишая нас преимуществ класса "Date".
Объект xts представляет собой временной ряд. dataframe очень просто конвертируется в xts. Процесс происходит следующим образом:
Теперь давайте использовать функцию 'ls.str' вместо 'class', чтобы увидеть классы различных векторов в нашем объекте. Она отображает внутреннюю структуру объекта R. В выводе str() на каждый столбец объекта приходится одна строка.
> str(data)
'data.frame': 5 obs. of 3 variables:
$ Date : Factor w/ 5 levels "12-12-2012","13-12-2012". 1 2 3 4 5
$ MktCap: num 110 120 130 200 180
$ PE : num 18 18 18.5 19 19
Столбец 'Date' является факторным. Мы преобразуем его в символьный, а затем в Date, всего одной строкой кода:
> date <- as.Date(as.character(data$Date), "%d-%m-%Y")
> class(date)
[1] "Date"
> date
[1] "2012-12-12" "2012-12-13" "2012-12-14" "2012-12-16" "2012-12-19"
> mktCap <- as.numeric(data$MktCap)
> class(mktCap)
[1] "numeric"
Создадим объект временного ряда xts. Обратите внимание на порядок расположения данных и дат при сборке объекта: xts(data,date).
> library(xts)
> mcData <- xts(mktCap, date)
> mcData
[,1]
2012-12-12 110
2012-12-13 120
2012-12-14 130
2012-12-16 200
2012-12-19 180
> library(quantmod)
> getSymbols("GOOG",src="http://distrland.blogspot.com/2017/11/google", from="2010-01-01", to="2015-01-01")
[1] "GOOG"
> head(GOOG, 5)
GOOG.Open GOOG.High GOOG.Low GOOG.Close GOOG.Volume
2010-01-04 313.16 314.44 311.81 313.06 NA
2010-01-05 313.28 313.61 310.46 311.68 NA
2010-01-06 312.62 312.62 302.88 303.83 NA
2010-01-07 304.40 304.70 296.03 296.75 NA
2010-01-08 295.70 301.32 294.26 300.71 NA
> colnames(GOOG)
[1] "GOOG.Open" "GOOG.High" "GOOG.Low" "GOOG.Close" "GOOG.Volume"
> colnames(GOOG)[5] <- "Vol"
> colnames(GOOG)
[1] "Open" "High" "Low" "Close" "Vol"
> high <- GOOG[, 2]
> head(high, 5)
High
2010-01-04 314.44
2010-01-05 313.61
2010-01-06 312.62
2010-01-07 304.70
2010-01-08 301.32
> high <- GOOG$High
> head(high, 5)
High
2010-01-04 314.44
2010-01-05 313.61
2010-01-06 312.62
2010-01-07 304.70
2010-01-08 301.32
Open Low Close Vol
2010-01-04 313.16 311.81 313.06 NA
2010-01-05 313.28 310.46 311.68 NA
2010-01-06 312.62 302.88 303.83 NA
2010-01-07 304.40 296.03 296.75 NA
2010-01-08 295.70 294.26 300.71 NA
Также просто можно удалить несколько столбцов из объекта с большим количеством данных. Мы будем использовать набор временных рядов, показывающих ВВП на душу населения в 165 странах с 1970 по 2010 год. Файл можно скачать здесь .
> library(xlsx)
> rawdata <- read.xlsx("gdp.xlsx", sheetIndex = 1)
> str(rawdata)
> date <- as.Date(as.character(rawdata[, 1]), "%Y-%m-%d")
> data <- xts(rawdata[, -1], date)
Добавление столбцов (объединение двух объектов данных)
Объединим два объекта с одним и тем же временным индексом
> monOilRawData <- read.xlsx("Oil.xlsx", sheetIndex = 1, startRow = 1)
> monOilData <- xts(monOilRawData[, -1], monOilRawData[, 1])
> rawdata <- read.xlsx2("gdp.xlsx", sheetIndex = 1)
> date <- as.Date(as.character(rawdata[, 1]), "%Y-%m-%d")
> data <- xts(rawdata[, -1], date)
> set <- c("Brazil.", "Russia", "India.", "China.", "South.Africa.")
> dataExBRICS <- data[, (which(colnames(data) %in% set))]
> colnames(dataExBRICS)
> usdrub <- read.csv(file = "usdrub.csv", header = TRUE)
> date <- as.Date(as.character(usdrub[, 1]), "%Y-%m-%d")
> UsdtoRub <- xts(usdrub[, -1], date)
> weekly <- period.apply(UsdtoRub, INDEX = week.end, FUN = last)
> head(weekly, 5)
[,1]
2017-01-14 59.3700
2017-01-21 59.6697
2017-01-28 60.3196
2017-02-04 59.3137
2017-02-11 58.8457
> weekly <- period.apply(UsdtoRub, INDEX = week.end, FUN = mean)
> head(weekly, 5)
[,1]
2017-01-14 59.77572
2017-01-21 59.44260
2017-01-28 59.56486
2017-02-04 59.97126
2017-02-11 59.05750
> month.end <- endpoints(UsdtoRub, on = "months")
> monthly <- period.apply(UsdtoRub, INDEX = month.end, FUN = last) > head(monthly, 5)
[,1]
2017-01-31 60.1618
2017-02-28 57.9371
2017-03-31 56.3779
2017-04-29 56.9838
2017-05-31 56.5168
> monthly <- period.apply(UsdtoRub, INDEX = month.end, FUN = mean)
> head(monthly, 5)
[,1]
2017-01-31 59.62986
2017-02-28 58.53936
2017-03-31 58.00663
2017-04-29 56.43561
2017-05-31 56.95007
Комментариев нет:
Подпишитесь на RSS
Перевод. Оригинал здесь. Если вы новичек в Linux и ранее использовали iTunes для управления своим iPod/iPhone/iPad, то скорее всего буд.
uTorrent - это легкий и эффективный торрент-клиент для Linux, Windows OS и Mac OS. Установка uTorrent в Linux отличается тем, что здесь uT.
Вы можете запускать скрипты на python в Linux непосредственно из терминала. Знать, как это делается, полезно как программистам, так и пол.
Как вы наверное знаете, Safari является браузером по умолчанию в Mac OS X и iPhone OS. Вышло уже несколько релизов и для Windows, но версии .
Способ сброса пароля root в CentOS 7 кардинально отличается от такового в Centos 6. 1. В загрузочном меню нажмите "е" - реда.
В прошлый раз мы говорили о том, как загрузить данные в среду R. Следующим важным этапом является их подготовка к визуализации и статистическому анализу. Для этого нам, как правило, необходимо внести некоторые изменения в таблицу, например: удалить столбец или строку, переименовать колонку, произвести сортировку или фильтрацию данных. Многие из этих операций можно сделать в Excel. Однако, зачастую возникают ситуации, когда необходимо изменить структуру или содержание таблицы прямо в ходе анализа. И вот тут у начинающих пользователей R могут возникнуть проблемы. В этой статье мы научимся их решать.
Структура таблицы и изменение типов данных
Лучший способ для закрепления новых знаний - это практика. Поэтому мы продолжим работать с таблицей физических данных студентов одного из военных вузов "voenvuz". Итак, загрузим знакомую уже нам таблицу в Rgui (таблицу можно скачать здесь).
Функции head и str
Для того, чтобы посмотреть правильно ли загрузились данные, введем команду head(voenvuz) , которая покажет первые 6 строчек нашей таблицы. Если все загрузилось нормально, то переходим к команде str(voenvuz) , которая выведет в консоль структуру таблицы.
Итак, в поле "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) , мы должны получить вот такую картинку.
Редактирование элементов таблицы
Иногда возникают ситуации, когда необходимо вставить в таблицу столбец или строку, изменить значение элемента или название колонки. Наша таблица - не исключение и нуждается в доработке.
Добавление строк
Добавим в таблицу данные о двух новых студентах: Иване и Олеге. Для этого необходимо создать новую структуру - список (list) , В список мы по порядку вносим параметры, совпадающие со структурой таблицы (напомню, что в кавычках мы пишем нечисловые типы данных):
После, при помощи функции rbind (от англ. row bind, что дословно означает "связать строчки") мы объединим эти два списка с нашей таблицей:
Добавление столбцов
Теперь у нас в таблице два Ивана и два Олега. В данном случае хорошо было бы прописать для каждого студента свой идентификационный номер (ID), чтобы не запутаться, кто есть кто. Для этого создадим структуру, которая называется вектор (последовательность элементов одного типа). В него мы запишем последовательность от 1 до 22, так, чтобы у каждого из наших 22 студентов был свой уникальный ID:
Теперь объединим наш вектор с таблицей, воспользовавшись функцией cbind (от англ. column bind):
Не забудьте поменять тип данных нового столбца на символьный:
В качестве еще одного примера добавления новых столбцов с данными в таблицу, рассчитаем индекс массы тела (BMI) для каждого студента. Для этого, мы воспользуемся новым способом: напишем математическую формулу индекса на языке R и присвоим ей новое имя столбца "BMI" внутри нашей таблицы:
Проверьте, что получилось, используя уже знакомые нам функции head и str
Удаление строк и столбцов
Существует относительно "универсальная формула" для удаления элементов таблицы: new.data <- my.data[ , ]
Для того, чтобы корректно ее использовать необходимо запомнить несколько правил:
- После имени таблицы пространство внутри квадратных скобок следует разделить на две части запятой.
- Все, что находится до запятой, относится к строчкам, все что после - к столбцам.
- Поставьте минус перед номером столбца или номером строки, которую собираетесь удалить.
- Если таких элементов несколько, используйте функцию c(. ) : внутри скобок перечисление элементов через запятую.
В нашем случае, удалять из таблицы ничего не надо, но я покажу пару примеров, назвав "укороченные" таблицы именами "trash1", "trash2", "trash3", "trash4":
Изменение имен столбцов и данных в ячейках:
Переименуем колонку "Rhesus.factor" на укороченное "Rhesus". Для этого нужно вызвать функцию names , написать в параметрах функции имя таблицы и номер столбца, и присвоить ему новое имя :
Изменение данные в ячейках таблицы не представляет особой сложности. В квадратных скобках прописываем координаты нужной ячейки (до запятой - строка, после запятой - столбец) и присваиваем новое значение:
После всех наших манипуляций мы должны получить вот такую таблицу данных:
Фильтрация и сортировка данных
В качестве примера, исключим из таблицы данных студентов, чей возраст больше 23 лет. Существует множество способов решения подобного рода задач, включая циклы if-else, for или while (о них будет написана отдельная статья). Однако в нашем случае хватит простого фильтра, основанного на логическом операторе "< wp-block-preformatted"> voenvuz.final <- voenvuz[voenvuz$Age <= 23, ]
Того же результата мы добьемся, если будем использовать логические операторы ">" (больше) и "!" (исключить):
Итак, мы получили финальную версию таблицы "voenvuz.final ". Осталось лишь упорядочить столбцы:
И произвести сортировку данных по имени студентов, используя функцию order :
После завершения редактирования таблицы, обновим имена строк, т.к. сейчас они не соответствуют действительности, и выведем таблицу на экран, введя имя таблицы в консоль:
Заключение
Описанные выше способы редактирования данных в таблице не уникальны, существует множество других методов и команд, позволяющих получить желаемый результат. Я рассказал лишь о наиболее простых и часто используемых. Для более детального ознакомления с этой темой я хотел бы порекомендовать два источника на английском языке:
- сайт http://stackoverflow.com/ (уже подробно разобраны тысячи вопросов по этой теме)
- книгу-справочник "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]3*)
treenames <- grep("([A-z]4*)", 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
Сам пробовал искать ответ, но видимо это настолько просто, что об этом ни где не пишут. :-)
Заранее спасибо.
Здравствуйте, Alex! Извините, был в отпуске, не смог ответить. Ваш вопрос еще актуален или уже решен?
Читайте также: