Я хотел бы преобразовать факторную переменную в числовую, но as.numeric
не имеет ожидаемого эффекта.
Ниже я получаю сводную статистику для числовой версии переменной на основе исходной переменной. Средство продолжает считать до 1 ... возможно (он размышляет), что уровни фактора имеют как имена, так и числа, и я ожидаю, что значение новой переменной будет исходить от имени, когда as.numeric
оно предназначено для использования числа?
> describe.by(as.numeric(df$sch), df$sch)
group:
var n mean sd median trimmed mad min max range skew kurtosis se
1 1 5389 1 0 1 1 0 1 1 0 NaN NaN 0
---------------------------------------------------------
group: 001
var n mean sd median trimmed mad min max range skew kurtosis se
1 1 19 2 0 2 2 0 2 2 0 NaN NaN 0
---------------------------------------------------------
group: 002
var n mean sd median trimmed mad min max range skew kurtosis se
1 1 54 3 0 3 3 0 3 3 0 NaN NaN 0
---------------------------------------------------------
r
data-transformation
Майкл Бишоп
источник
источник
Ответы:
Это правильно:
as.numeric(factor)
возвращает число, которое R присваивает уровню этого фактора. Вы могли бы попробоватьas.numeric(as.character(factor))
источник
as.numeric(levels(f))[f]
рекомендуется и немного более эффективен, чемas.numeric(as.character(f))
Это часто задаваемые вопросы 7.10 в R Часто задаваемые вопросы. Да, коэффициент хранится в виде целых чисел от 1 до количества уровней, а as.numeric дает базовые коды. FAQ предлагает 2 способа преобразования в числовые.
Однако обычно это происходит потому, что когда вы читали данные, в ваших данных было что-то такое, что заставляло R рассматривать их как фактор вместо чисел (часто случайный нечисловой символ). Часто лучше исправить необработанные данные (преобразование преобразует нечисловую часть в NA) или использовать аргумент colClasses, если используется read.table или аналогичный.
источник