Как заменить некоторые строковые значения столбца на некоторые целочисленные значения? - PullRequest
1 голос
/ 24 мая 2019

В наборе данных veteran пакета R и я сейчас работаю над столбцом celltype.В частности, мне нужно заменить некоторые целочисленные значения для текущих строковых значений столбца следующим образом.

veteran[veteran$celltype == "squamous",]$celltype <- 1
veteran[veteran$celltype == "smallcell",]$celltype <- 2
veteran[veteran$celltype == "adeno",]$celltype <- 3
veteran[veteran$celltype == "large",]$celltype <- 4

Но R жалуется так:

veteran[veteran$celltype == "squamous",]$celltype = 1
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = c(1, 1, 1, 1, 1, 1, 1, 1,  :
  invalid factor level, NA generated

veteran[veteran$celltype == "smallcell",]$celltype = 2
Error in `[<-.data.frame`(`*tmp*`, veteran$celltype == "smallcell", ,  : 
  missing values are not allowed in subscripted assignments of data frames

Что я делаю неправильноздесь

1 Ответ

1 голос
/ 24 мая 2019

В наборе данных ветеранов тип ячейки столбца фактически имеет фактор типа. Факторы рассматриваются R как целые числа с метками. Это чрезвычайно полезно в некоторых алгоритмах машинного обучения, потому что они принимают числа, но не строки.

В вашем случае, так как вы заинтересованы в целых числах, вы можете просто сделать:

veteran$celltype <- as.numeric(veteran$celltype)

и этого будет достаточно.

Подробнее о factors можно узнать здесь - прокрутите вниз до раздела Факторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...