Ошибка «Объект не найден», хотя table () проверяет, что объект находится в наборе данных - PullRequest
0 голосов
/ 25 сентября 2019

Я прочитал других, у которых была похожая проблема, но моя ситуация, похоже, не совпадает с исправлениями, предложенными для этих других проблем.Я пытаюсь перекодировать переменную, используя условный оператор.Я хочу взять символьную строку и превратить ее в числовое, чтобы я мог поместить эти наблюдения в новый фрейм данных.Вот что у меня есть:

blad_mor <- read.csv("blad_mor.csv", header = T)

str(blad_mor)

blad_mor_recode <- gsub(C670:C679, 29010, blad_mor$cod)

Я получаю этот вывод для команды str():

> str(blad_mor)
'data.frame':   127073 obs. of  12 variables:
 $ year          : int  1999 1999 1999 1999 1999 1999 1999 1999 1999 1999 ...
 $ sex           : Factor w/ 4 levels "1","2","F","M": 1 1 1 2 1 2 2 2 2 2 ...
 $ race          : Factor w/ 17 levels "America","Asian &",..: 4 4 4 4 4 4 4 4 4 4 ...
 $ county        : Factor w/ 79 levels "COUNTY1","COUNTY2",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ cod           : Factor w/ 327 levels "C001","C005",..: 89 108 108 294 63 42 172 74 85 269 ...
 $ fips          : int  1 1 1 1 1 1 1 1 1 1 ...
 $ state         : int  5 5 5 5 5 5 5 5 5 5 ...
 $ race_code     : int  2 2 2 2 2 2 2 2 2 2 ...
 $ ethnicity     : Factor w/ 4 levels "","Hispanic",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ ethnicity_code: int  NA NA NA NA NA NA NA NA NA NA ...

Но когда я пытаюсь код blad_mor_recode <- gsub(C670:C679, 29010, blad_mor$cod), я получаю эту ошибку:

> blad_mor_recode <- gsub(C670:C679, 29010, blad_mor$cod)
Error in gsub(C670:C679, 29010, blad_mor$cod) : object 'C670' not found

Итак, я проверяю, что на самом деле это этот объект table(blad_mor$cod), и это часть вывода:

C578  C579   C58   C60  C601  C609   C61  C629  C631  C639   C64   C65   C66  C670  C672  C674  C675  C676 
    2    43     4     1     1    53  6162    62     1    14  2911    30    47    1     4     1     1     2 
 C677  C678  C679  C680  C689  C690  C692  C693  C694  C695  C696  C699  C700  C701  C709   C71  C710  C711 
    1     4  2776    35    77     1     4     5     1     1     8    45     7     3    11     1    29    34 

Объект 'C670 'имеет один экземпляр согласно этому выводу, но R говорит мне, что его там нет и не запускает команду.Что мне здесь не хватает?Должен ли я изменить тип класса с фактора на что-то еще?Я в замешательстве.

Редактировать: я пробовал кавычки вокруг строк символов (например, blad_mor_recode <- gsub('C670:C679', '29010', blad_mor$cod), а также ifelse (). Я все еще получаю то же сообщение об ошибке.

1 Ответ

1 голос
/ 25 сентября 2019

Если вы хотите изменить все строки с C70 на C79, вы должны использовать regex.Будет работать что-то вроде следующего:

blad_mor_recode <- gsub("C7[0-9]", "29010", blad_mor$cod)

Простой пример:

gsub("C7[0-9]","",c("C60","C70","C78"))
[1] "C60" ""    "" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...