Если есть только два типа, например, тип A
и B
, ответ, указанный в комментариях с ifelse()
, является работоспособным.
Однако, если существует более двух типов, для одного потребуется более одного столбца для хранения переменных уровней type
в качестве фиктивных переменных. Для этой цели можно использовать пакет dummies
. Если type
является столбцом во фрейме данных, мы можем использовать функцию dummies::dummy()
для создания одной фиктивной переменной для каждого типа. Мы проиллюстрируем некоторые примеры данных.
textFile <- "name,country,type
Joe,England,A
Herve,France,A
Pat,US,B
Jane,US,B
Frank,Canada,B,
Julio,Mexico,C
Juan,Cuba,C"
data <- read.csv(text=textFile)
dummyData <- dummy(data$type)
dummyData
... и вывод:
> dummyData
typeA typeB typeC
[1,] 1 0 0
[2,] 1 0 0
[3,] 0 1 0
[4,] 0 1 0
[5,] 0 1 0
[6,] 0 0 1
[7,] 0 0 1
>
Чтобы добавить фиктивные данные во фрейм входных данных, мы используем функцию dummy.data.frame()
.
dummyData <- dummy.data.frame(names = c("type"),data = data)
dummyData
... и вывод:
> dummyData
name country typeA typeB typeC
1 Joe England 1 0 0
2 Herve France 1 0 0
3 Pat US 0 1 0
4 Jane US 0 1 0
5 Frank Canada 0 1 0
6 Julio Mexico 0 0 1
7 Juan Cuba 0 0 1
>