Преобразование факторов в типы двоичных асимметричных переменных
Я хочу конвертировать некоторые типы переменных в R
от факторов к двоичным типам асимметричных переменных.
Я успешно преобразовал некоторые из моих данных из факторов в упорядоченные факторы, используя этот синтаксис: mydata[,200] <-as.ordered(mydata[,200])
, но когда я попробовал нечто подобное, чтобы преобразовать их в двоичные асимметричные переменные, я потерпел неудачу, и у меня возникли проблемы с поиском какой-либо информации о том, как это сделать в Интернете или в моей книге. Мне нужно, чтобы они были определены как асимметричные, потому что я собираюсь использовать функцию ромашки, чтобы посмотреть на различия. Если бы кто-нибудь мог сказать мне, как преобразовать коэффициенты в двоичные асимметричные, я был бы невероятно благодарен.
Изменить: Чтобы ответить на вопрос об асимметричных и симметричных переменных: основное различие между двоичной симметричной и двоичной асимметричной заключается в симметричных переменных, оба имеют одинаковый вес (это человек или женщина), в то время как в асимметричных переменных одна важнее чем другой. Неважно, если люди не разделяют характеристики, это имеет значение, только если они делают. Так, например, у людей, страдающих дальтонизмом, есть что-то общее, а у людей, не страдающих дальтонизмом, нет.
Итак, что я хочу сделать, это установить его, где по существу 0= неважно, 1= важно. Из того, что я прочитал (Kaufmann & Rousseeuw 1990), важно различать, что они асимметричны при различиях.
structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, NA, 1L, NA,
1L, 1L, 1L, NA, NA, 1L, 1L, 1L, NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor")
Дальнейшие изменения: я не верю, что мне нужна фиктивная переменная, поскольку она технически уже является двоичной (все равно 1, 0 или NA) - я просто не знаю, как заставить R изменить переменную в асимметричную двоичную переменная, а не фактор.
2 ответа
Будет полезно добавить пример ввода и желаемого результата. Я считаю, что вы ищете что-то под названием dummy variables
,
col1
row1 a
row2 b
row3 a
превратился в
a b
row1 1 0
row2 0 1
row3 1 0
Если это то, что вы имеете в виду под преобразованием факторных переменных в двоичные асимметричные переменные, пожалуйста, проверьте пакет dummies, который делает это в R.
Одним из способов является первое использование as.vector()
преобразовать ваш фактор в символьный вектор с уровнями 1
а также 2
заменены их ярлыками "0"
а также "1"
а затем использовать as.numeric()
преобразовать результат в числа 0
а также 1
:
v <- structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, NA, 1L, NA,
1L, 1L, 1L, NA, NA, 1L, 1L, 1L, NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor")
v <- as.numeric(as.vector(v))
Эквивалентно, хотя, возможно, более неясно, вы могли бы заменить последнюю строку на
v <- as.numeric(v) - 1
as.numeric()
берет коэффициент и преобразует его в вектор уровней (которые являются числами 1 и 2), а затем вычитая 1, уменьшает результат до 0 и 1. В любом случае вы получаете двоичный числовой вектор:
> v
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
[27] NA 0 NA 0 0 0 NA NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0