Прошу прощения, если есть ответ, который уже есть для этого ... Я смотрел, но не мог найти его.Преобразование коэффициентов в номера
Я пытаюсь преобразовать матрицу факторов в матрицу чисел, соответствующую каждому из значений коэффициента для столбца. Простой, не так ли? Тем не менее, я столкнулся со множеством очень странных проблем, когда я пытаюсь это сделать.
Позвольте мне объяснить. Вот пример набора данных:
demodata2 <- matrix(c("A","B","B","C",NA,"A","B","B",NA,"C","A","B",NA,"B",NA,"C","A","B",NA,NA,NA,"B","C","A","B","B",NA,"B","B",NA,"B","B",NA,"C","A",NA), nrow=6, ncol=6)
democolnames <- c("Q","R","S","T","U","W")
colnames(demodata2) <- democolnames
Уступая:
Q R S T U W
[1,] "A" "B" NA NA "B" "B"
[2,] "B" "B" "B" NA "B" "B"
[3,] "B" NA NA NA NA NA
[4,] "C" "C" "C" "B" "B" "C"
[5,] NA "A" "A" "C" "B" "A"
[6,] "A" "B" "B" "A" NA NA
Ok. Так что я хочу это:
Q R S T U W
1 1 2 <NA> <NA> 1 2
2 2 2 2 <NA> 1 2
3 2 <NA> <NA> <NA> <NA> <NA>
4 3 3 3 2 1 3
5 <NA> 1 1 3 1 1
6 1 2 2 1 <NA> <NA>
Нет проблем. Давайте попробуем as.numeric(demodata2)
> as.numeric(demodata2)
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[30] NA NA NA NA NA NA NA
Warning message:
NAs introduced by coercion
Меньше чем удовлетворение. Давайте попробуем только один столбец ...
> as.numeric(demodata2[,3])
[1] NA NA NA NA NA NA
Warning message:
NAs introduced by coercion
* редактировать *
Это на самом деле должны быть факторами, а не символы (спасибо @Carl Witthoft и @smci) ... так что давайте сделаем это в кадр данных ...
> demodata2 <- as.data.frame(demodata2)
> as.numeric(demodata2)
Error: (list) object cannot be coerced to type 'double'
Nope. Но ждать ... вот где это становится интересным ...
> as.numeric(demodata2$S)
[1] NA 2 NA 3 1 2
Ну, это правильно. Давайте проверим, что я могу сделать это, позвонив по номерам:
> as.numeric(demodata2[,3])
[1] NA 2 NA 3 1 2
Ok. Поэтому я могу сделать эту колонку по столбцу, собирающему мою новую матрицу, путем повторения через ncol
раз ... но есть ли лучший способ?
И почему это барф, когда оно находится в матричной форме, в отличие от кадра данных? < - edit Фактически, это сейчас довольно очевидно ... в матричной форме это символы, а не факторы. Виноват. Вопрос по-прежнему стоит в области данных, хотя ...
Спасибо! (и указывая на существующий ответ полностью)
Вашего примера ** Не ** факторы. Будьте осторожны с вашей номенклатурой. –
Ваш пример - это матрица строк, а не факторов. Строки не имеют уровней факторов и т. Д. – smci
Приношу свои извинения. Этот вопрос начался с импортированного набора данных, где строки автоматически считаются факторами (если не указано иное). Ошибка произошла, когда я попытался создать ее для использования stackoverflow. – rucker