我在R中使用sub()和gsub()函数重命名/更改R中的因子级别时遇到了一个小问题。但我不确定为什么它不起作用。
我有一些调查数据,其中几个因素的水平截断了高值。例如,关于你上周工作了多少小时的问题在“89+小时”处停止。我想把这个级别改为“89”,这样我就可以在其他活动中使用它。
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
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
如果我用*而不是a+,这个问题也会发生,但是如果它是点(.)而不是a+,这个问题也会发生。所以我认为这与某些特殊角色有关,而与其他角色无关。
提前谢谢!