Преобразование коэффициента в числовое без потери информации R (as.numeric(), похоже, не работает)
Возможный дубликат:
R - Как преобразовать коэффициент в целое число\число в R без потери информации
Мне было обращено внимание на следующий факт о функции as.numeric()
> blah<-c("4","8","10","15")
> blah
[1] "4" "8" "10" "15"
> blah.new<-as.factor(blah)
> blah.new
[1] 4 8 10 15
Levels: 10 15 4 8
> blah.new1<-as.numeric(blah.new)
> blah.new1
[1] 3 4 1 2
Когда я преобразовываю коэффициент с уровнями 4, 8, 10 и 15 в количественную переменную с использованием as.numeric(), каждое число преобразуется в ранжирование, а исходные значения теряются.
Как взять вектор "blah.new", который имеет уровни 10,15, 4 и 8, и преобразовать его в числовые значения 10, 15, 4 и 8?
(Эта проблема возникла из-за набора данных, где количественная переменная считывается read.table() как фактор)
Спасибо!!!!
***** Обновление: ФИГУРЫ ИЗОБРАЖЕНИЯ ******
blah.new1<-as.numeric(as.character(blah.new))
Однако мне интересно, где в документации для as.numeric() говорится, что эта функция преобразует аргументы в список ранжирования?
Ответы
Ответ 1
Во-первых, фактор состоит из индексов и уровней. Этот факт очень важен, когда вы боретесь с фактором.
Например,
> z <- factor(letters[c(3, 2, 3, 4)])
# human-friendly display, but internal structure is invisible
> z
[1] c b c d
Levels: b c d
# internal structure of factor
> unclass(z)
[1] 2 1 2 3
attr(,"levels")
[1] "b" "c" "d"
здесь z
имеет 4 элемента.
индекс 2, 1, 2, 3
в этом порядке.
Уровень связан с каждым индексом : 1 → b, 2 → c, 3 → d.
Затем as.numeric
просто преобразует часть фактора index в числовой.
as.character
обрабатывает индекс и уровни и генерирует вектор символов, выраженный его уровнем .
?as.numeric
говорит, что методы обрабатываются методом по умолчанию.