Перейти к содержимому

Как поменять тип данных в r

  • автор:

Типы данных в R

Переменная может хранить различные типы значений, такие как числа, символы и т.д. Эти различные типы значений называются типами данных. Например:

Здесь 152L является целочисленным значением. Таким образом, тип переменной a — целочисленный.

Мы можем это проверить:

# Выводим значение переменной а
# Выводим тип переменной а
print ( class ( a ) )

[1] 152
[1] «integer»

Переменная a имеет тип данных integer .

Типы данных в R

В языке R существует 6 основных типов данных:

Давайте обсудим каждый из этих типов по отдельности.

Логический тип данных (logical)

Логический тип данных ( logical ) в R может иметь только одно из двух значений: TRUE (истина) или FALSE (ложь). Например:

boolt < - TRUE print ( boolt ) print ( class ( boolt ) ) boolf < - FALSE print ( boolf ) print ( class ( boolf ) )

[1] TRUE
[1] «logical»
[1] FALSE
[1] «logical»

boolt имеет значение TRUE ;

boolf имеет значение FALSE .

При выводе типа обеих переменных мы получаем тип logical .

Примечание: Вы также можете определять логические переменные с помощью одной буквы: T для TRUE или F для FALSE. Например:

is_monday < - F print ( class ( is_monday ) ) # "logical"

Числовой тип данных (numeric)

Числовой тип данных ( numeric ) в R представляет все действительные числа с десятичными значениями или без них. Например:

# Вещественные значения с плавающей точкой
weight < - 70.3 print ( weight ) print ( class ( weight ) ) # Действительные числа height < - 175 print ( height ) print ( class ( height ) )

[1] 70.3
[1] «numeric»
[1] 175
[1] «numeric»

Здесь обе переменные weight и height имеют тип данных numeric .

Целочисленный тип данных (integer)

Целочисленный тип данных ( integer ) определяет целые числа без десятичных частей. Суффикс L используется для указания целочисленных данных. Например:

integer_variable < - 125L print ( class ( integer_variable ) )

Значение 125L имеет целочисленный тип данных, поэтому при выводе ее класса мы получили integer .

Комплексный тип данных (complex)

Комплексный тип данных ( complex ) используется для комплексных чисел. Для указания мнимой части применяется суффикс i . Например:

# 3i преставляет мнимую часть комплексного числа
complex_value < - 5 + 3i # Выводим тип переменной print ( class ( complex_value ) )

Здесь 5 + 3i имеет комплексный тип данных, поскольку имеет мнимую часть 3i .

Символьный тип данных (character)

Символьный тип данных ( character ) используется для задания символьных или строковых значений в переменной. Строка — это набор символов. Например, ‘W’ — это отдельный символ, а «Word» — это строка.

Вы можете использовать одинарные кавычки » или двойные кавычки «» для представления строк. Принято использовать:

одинарные кавычки » для переменных типа character ;

двойные кавычки «» для переменных типа string .

изменить значение данных в столбце в датафрейме в R

У меня есть датафрейм с 4 столбцами, в котором один из столбцов содержит данные, допустим, a, b, c, d, e. Всего 582 строки с этими значениями. Мне нужно заменить в последнем столбце «a» и «b» на 1, а «c», «d», «e» на 0 и создать новый шестой столбец, в котором присутствуют только эти 0 и 1 (для последующей логистической регрессии). Как я могу это сделать? Дали подсказку, что можно с помощью dplyr, но пока нет представления.

Нужно создать столбец Е, где заменить значения из столбца D на 0 и 1 так что: a, b = 1; c, d, e = 0 чтобы получилось так:

 A B C D E R1 3 1 2 a 1 R2 2 2 1 c 0 R3 1 3 4 c 0 R4 4 3 5 e 0 R5 5 4 2 d 0 R6 3 1 1 b 1 R7 4 4 3 a 1 R8 2 2 2 b 1 

Отслеживать
задан 29 окт 2021 в 15:46
57 6 6 бронзовых знаков

Пожалуйста, уточните вашу конкретную проблему или приведите более подробную информацию о том, что именно вам нужно. В текущем виде сложно понять, что именно вы спрашиваете.

Объекты и типы данных R: таблицы данных

Таблица данных (data frame) представляет собой объект R, по структуре напоминающий лист электронной таблицы Microsoft Excel. Каждый столбец таблицы является вектором, содержащим данные определенного типа. При этом действует правило, согласно которому все столбцы должны иметь одинаковую длину (собственно, с «точки зрения» R таблица данных является частным случаем списка, в котором все компоненты-векторы имеют одинаковый размер). Часто на практике некоторые значения в таблице отсутствуют, что может быть обусловлено множеством причин: на момент измерения прибор вышел из строя, по невнимательности персонала измерение не было занесено в протокол исследования, испытуемый отказался отвечать на определенный вопрос(ы) в анкете, была утеряна проба, и т.п. Ячейки с такими отсутствующими значениями (missing values) в таблицах данных R не могут быть просто пустыми – иначе столбцы таблицы окажутся разной длины. Для обозначения отсутствующих наблюдений в языке R имеется специальное значение – NA (not available – не доступно).

Таблицы данных – это основной класс объектов R, используемых для хранения данных. Обычно такие таблицы подготавливаются при помощи сторонних приложений (особенно популярна и удобна программа Microsoft Excel) и затем загружаются в среду R. Подробнее об импортировании данных в R рассказано здесь. Тем не менее, небольшую таблицу можно собрать из нескольких векторов средствами самой системы R. Для этого используют функцию data.frame() .

Предположим, у нас есть наблюдения по общей численности мужского ( Male ) и женского ( Female ) населения в трех городах City1 , City2 , и City3 . Представим эти данные в виде одной таблицы с именем CITY . Для начала создадим текстовые векторы с названиями городов ( сity ) и пола ( sex ), а также вектор со значениями численности представителей каждого пола ( number ):

city c("City1", "City1", "City2", "City2", "City3", "City3") sex c("Male", "Female", "Male", "Female", "Male", "Female") number c(12450, 10345, 5670, 5800, 25129, 26000)

Теперь объединим эти три вектора в одну таблицу данных и посмотрим, что получилось:

CITY data.frame(City = city, Sex = sex, Number = number) 
CITY City Sex Number 1 City1 Male 12450 2 City1 Female 10345 3 City2 Male 5670 4 City2 Female 5800 5 City3 Male 25129 6 City3 Female 26000

Обратите внимание на синтаксис функции data.frame() : ее аргументы перечисляются в формате » заголовок столбца = добавляемый вектор «. В качестве заголовков столбцов могут выступать любые пользовательские имена, удовлетворяющие требованиям R (см. об этом подробнее в следующем сообщении).

Как и в случае со списками, извлечь отдельные компоненты таблиц для выполнения необходимых вычислений можно с использованием знака $ , двойных квадратных скобок [[]] , либо непосредственно по имени столбца:

CITY$Sex [1] Male Female Male Female Male Female Levels: Female Male CITY$Number [1] 12450 10345 5670 5800 25129 26000 # Идентичные результаты можно получить при помощи следующих команд: CITY[[2]] [1] Male Female Male Female Male Female Levels: Female Male CITY[[3]] [1] 12450 10345 5670 5800 25129 26000 CITY["Sex"] [1] Male Female Male Female Male Female Levels: Female Male CITY["Number"] [1] 12450 10345 5670 5800 25129 26000

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

# Извлекаем 4-й элемент из столбца Number: CITY$Number[4] [1] 5800 # Извлекаем элементы 1-3 из столбца Number: CITY$Number[1:3] [1] 12450 10345 5670 # Извлекаем все значения численности населения, превышающие 10000 CITY$Number[CITY$Number > 10000] [1] 12450 10345 25129 26000 # Извлекаем все значения численности мужского населения: CITY$Number[CITY$Sex == "Male"] [1] 12450 5670 25129 # Повторяем те же команды, но с использованием [[]]: CITY[[3]][4] [1] 5800 CITY[[3]][1:3] [1] 12450 10345 5670 CITY[[3]][CITY$Number >10000] [1] 12450 10345 25129 26000 CITY[[3]][CITY$Sex == "Male"] [1] 12450 5670 25129

При работе с большими таблицами данных бывает сложно визуально исследовать всё их содержимое перед началом анализа. Однако визуального просмотра содержимого таблиц и не требуется — полную сводную информацию о них (равно как и о других объектах R) можно лекго получить при помощи команды str() (structure — структура):

str(CITY) 'data.frame': 6 obs. of 3 variables: $ City : Factor w/ 3 levels "City1","City2",. 1 1 2 2 3 3 $ Sex : Factor w/ 2 levels "Female","Male": 2 1 2 1 2 1 $ Number: num 12450 10345 5670 5800 25129 .

Как следует из представленного отчета, объект CITY является таблицей данных, в состав которой входят три перменные с шестью наблюдениями каждая. Две из этих перменных — City и Sex — программа автоматически распознала как факторы с тремя и двумя уровнями соответственно. Переменная Number является количественной. Для удобства выводятся также несколько первых значений каждой переменной.

Часто возникает необходимость выяснить лишь имена переменных, входящих в таблицу данных. Это можно сделать при помощи команды names() :

names(CITY) [1] "City" "Sex" "Number"

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

head(CITY, n = 3) City Sex Number 1 City1 Male 12450 2 City1 Female 10345 3 City2 Male 5670
tail(CITY, n = 2) City Sex Number 5 City3 Male 25129 6 City3 Female 26000

При необходимости внесения исправлений в таблицу можно воспользоваться встроенным в R редактором данных. Внешне этот редактор напоминает обычный лист Excel, однако имеет весьма ограниченные функциональные возможности. Все, что он позволяет делать – это добавлять новые или исправлять уже введенные значения переменных, изменять заголовки столбцов, а также добавлять новые строки и столбцы. Работая в стандартной версии R, редактор данных можно запустить из меню File -> Data editor либо выполнив команду fix() (fix – исправлять, чинить) из командной строки консоли R (например, fix(CITY) ). После внесения исправлений редактор просто закрывают – все изменения будут сохранены автоматически:

Обратите внимание, что в программе RStudio функция fix() в настоящее время не поддерживается.

Преобразование типов для примитивов

Материал на этой странице устарел, поэтому скрыт из оглавления сайта.

Более новая информация по этой теме находится на странице https://learn.javascript.ru/type-conversions.

Система преобразования типов в JavaScript очень проста, но отличается от других языков. Поэтому она часто служит «камнем преткновения» для приходящих из других языков программистов.

Всего есть три преобразования:

  1. Строковое преобразование.
  2. Численное преобразование.
  3. Преобразование к логическому значению.

Эта глава описывает преобразование только примитивных значений, объекты разбираются далее.

Строковое преобразование

Строковое преобразование происходит, когда требуется представление чего-либо в виде строки. Например, его производит функция alert .

var a = true; alert( a ); // "true"

Можно также осуществить преобразование явным вызовом String(val) :

alert( String(null) === "null" ); // true

Как видно из примеров выше, преобразование происходит наиболее очевидным способом, «как есть»: false становится «false» , null – «null» , undefined – «undefined» и т.п.

Также для явного преобразования применяется оператор «+» , у которого один из аргументов строка. В этом случае он приводит к строке и другой аргумент, например:

alert( true + "test" ); // "truetest" alert( "123" + undefined ); // "123undefined"

Численное преобразование

Численное преобразование происходит в математических функциях и выражениях, а также при сравнении данных различных типов (кроме сравнений === , !== ).

Для преобразования к числу в явном виде можно вызвать Number(val) , либо, что короче, поставить перед выражением унарный плюс «+» :

var a = +"123"; // 123 var a = Number("123"); // 123, тот же эффект
Значение Преобразуется в.
undefined NaN
null 0
true / false 1 / 0
Строка Пробельные символы по краям обрезаются.
Далее, если остаётся пустая строка, то 0 , иначе из непустой строки «считывается» число, при ошибке результат NaN .
// после обрезания пробельных символов останется "123" alert( +" \n 123 \n \n" ); // 123
alert( +true ); // 1 alert( +false ); // 0
alert( "\n0 " == 0 ); // true
alert( "\n" == false ); alert( "1" == true );

Специальные значения

Посмотрим на поведение специальных значений более внимательно.

Интуитивно, значения null/undefined ассоциируются с нулём, но при преобразованиях ведут себя иначе.

Специальные значения преобразуются к числу так:

Значение Преобразуется в.
undefined NaN
null 0

Это ведёт к забавным последствиям.

Например, null не подчиняется законам математики – он «больше либо равен нулю»: null>=0 , но не больше и не равен:

alert( null >= 0 ); // true, т.к. null преобразуется к 0 alert( null > 0 ); // false (не больше), т.к. null преобразуется к 0 alert( null == 0 ); // false (и не равен!), т.к. == рассматривает null особо.

Значение undefined вообще «несравнимо»:

alert( undefined > 0 ); // false, т.к. undefined -> NaN alert( undefined == 0 ); // false, т.к. это undefined (без преобразования) alert( undefined < 0 ); // false, т.к. undefined ->NaN

Для более очевидной работы кода и во избежание ошибок лучше не давать специальным значениям участвовать в сравнениях > >= <

Используйте в таких случаях переменные-числа или приводите к числу явно.

Логическое преобразование

Преобразование к true/false происходит в логическом контексте, таком как if(value) , и при применении логических операторов.

Все значения, которые интуитивно «пусты», становятся false . Их несколько: 0 , пустая строка, null , undefined и NaN .

Остальное, в том числе и любые объекты – true .

Полная таблица преобразований:

Значение Преобразуется в.
undefined , null false
Числа Все true , кроме 0 , NaN — false .
Строки Все true , кроме пустой строки «» — false
Объекты Всегда true

Для явного преобразования используется двойное логическое отрицание !!value или вызов Boolean(value) .

Обратите внимание: строка «0» становится true

В отличие от многих языков программирования (например PHP), «0» в JavaScript является true , как и строка из пробелов:

alert( !!"0" ); // true alert( !!" " ); // любые непустые строки, даже из пробелов - true!

Логическое преобразование интересно тем, как оно сочетается с численным.

Два значения могут быть равны, но одно из них в логическом контексте true , другое – false .

Например, равенство в следующем примере верно, так как происходит численное преобразование:

alert( 0 == "\n0\n" ); // true

… А в логическом контексте левая часть (0) даст false , правая («\n0\n») – true , так как любая не пустая строка в логическом контексте равна true :

if ("\n0\n")

С точки зрения преобразования типов в JavaScript это совершенно нормально. При сравнении с помощью «==» – численное преобразование, а в if – логическое, только и всего.

Итого

В JavaScript есть три преобразования:

  1. Строковое: String(value) – в строковом контексте или при сложении со строкой. Работает очевидным образом.
  2. Численное: Number(value) – в численном контексте, включая унарный плюс +value . Происходит при сравнении разных типов, кроме строгого равенства.
  3. Логическое: Boolean(value) – в логическом контексте, можно также сделать двойным НЕ: !!value .

Точные таблицы преобразований даны выше в этой главе.

Особым случаем является проверка равенства с null и undefined . Они равны друг другу, но не равны чему бы то ни было ещё, этот случай прописан особо в спецификации.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *