Я столкнулся с ошибкой, используя функции sub () и gsub () в R, чтобы переименовать / изменить уровень фактора в R. Но я не уверен, почему он не работает.
Сценарий:У меня есть некоторые данные опроса, которые несколько факторов с уровнями, которые усекают высокое значение.Например, вопрос о том, сколько часов вы работали на прошлой неделе, останавливается на отметке «89+ часов».Я хочу изменить этот уровень на «89», чтобы использовать его численно для других видов деятельности. Я знаю несколько способов сделать это, поэтому мне не нужны другие варианты изменения уровня.
Я следовал инструкциям по использованию функций sub () и gsub () изэтот сайт: http://www.cookbook -r.com / Manipulating_data / Renaming_levels_of_a_factor / Концепция ясна и прямолинейна.
Вот исходный пример данных:
x <- factor(c("a", "b", "c", "d"))
x
[1] a b c d
Levels: a b c d
Я могу изменить уровень d на уровень 89
x <- factor(c("a", "b", "c", "d"))
levels(x) <- sub("d", "89", levels(x))
x
[1] a b c 89
Levels: a b c 89
Я в порядке, когда вводю пробел в уровне:
x <- factor(c("a", "b", "c", "d"))
levels(x) <- sub("d", "89 hrs", levels(x))
x
[1] a b c 89 hrs
Levels: a b c 89 hrs
Я в порядке, когда вводю символ + на новый уровень фактора:
x <- factor(c("a", "b", "c", "d"))
levels(x) <- sub("d", "89+ hrs", levels(x))
x
[1] a b c 89+ hrs
Levels: a b c 89+ hrs
Но я застреваю, когда пытаюсь переименовать / изменить уровень, в котором есть символ +, на один без него:
x <- factor(c("a", "b", "c", "89+ hrs"))
x
[1] a b c 89+ hrs
Levels:89+ hrs a b c
levels(x) <- sub("89+ hrs", "d", levels(x))
x
[1] a b c 89+ hrs
Levels: 89+ hrs a b c
Та же проблема, когда я включаю конкретную строку пример со связанного сайта:
levels(x) <- sub("^89+ hrs$", "d", levels(x))
x
[1] a b c 89+ hrs
Levels: 89+ hrs a b c
Я получаю ту же проблему, если я использую gsub () вместо sub ()также.
Проблема также возникает, если у меня есть * вместо +, но работает, если это точка (.) вместо +.Поэтому я думаю, что это связано с определенными специальными символами, но не с другими.
Есть мысли, почему это не работает с символом + и как я могу использовать эти функции?Заранее спасибо!