Проблема перетворення з коефіцієнта в числову змінну в R [закрито]


11

Я хотів би перетворити змінну коефіцієнта в числову, але 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
--------------------------------------------------------- 

1
Я видалив нові теги, які ви додали; вони здалися мені занадто загальними і не дискримінаційними, або у випадку з as.factor занадто вузькими (оскільки це функція в базі R). Будь ласка, відправте тег, якщо ви вважаєте, що щось втрачено.
JMS

Відповіді:


28

Це правильно: as.numeric(factor)повертає число, яке R присвоює, на рівень цього коефіцієнта. Ви можете спробуватиas.numeric(as.character(factor))


4
Оскільки у цій відповіді наводиться рекомендація stackoverflow.com/a/3418192/476907 as.numeric(levels(f))[f] та трохи ефективніша, ніжas.numeric(as.character(f))
дисципліна

Дякую! Ця відповідь мені дуже допомогла :)
Яша,

13

Це найпоширеніші запитання 7.10 у R-поширених питаннях. Так, коефіцієнт зберігається у вигляді цілих чисел від 1 до кількості рівнів, а. Числовий код дає основні коди. FAQ надає 2 способи перетворення в числовий.

Однак, як правило, це відбувається тому, що, коли ви читаєте дані, там було щось про ваші дані, через що R трактував їх як фактор, а не числа (часто бродячий нечисловий символ). Часто краще виправити необроблені дані (перетворення перетворить нечисловий фрагмент в NA) або використовувати аргумент colClasses, якщо використовується read.table або подібні.


1
values.tmp <- sapply (можливіValues, as.numeric); values.nonnumeric <- values.tmp [is.na (values.tmp)]
russellpierce
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.