用数据框中的文本替换数字

标签 r replace gsub

我确定有一个简单的答案,但我一直在搜索,但找不到任何关于此的内容。

我有一个数据框 (sdata),其中有一列名为“landcover”这是一个分类变量,但到目前为止,每种土地覆盖类型都由一个数字表示。

我想用文本替换地被数字代码,并想出了部分方法:

sdata$landcover<- as.factor(sdata$landcover)
levels(sdata$landcover) <- gsub("1", "w.subboreal", levels(sdata$landcover))
levels(sdata$landcover) <- gsub("2", "PICO", levels(sdata$landcover))
levels(sdata$landcover) <- gsub("3", "ABLA.PIEN", levels(sdata$landcover))
levels(sdata$landcover) <- gsub("5", "dry.forest", levels(sdata$landcover))
levels(sdata$landcover) <- gsub("10", "shrubby", levels(sdata$landcover))
levels(sdata$landcover) <- gsub("11", "agriculture", levels(sdata$landcover))
levels(sdata$landcover) <- gsub("13", "disturbed", levels(sdata$landcover))

这适用于单个数字,但例如,数字 13 变成“w.subborealABLA.PIEN”(即 1 和 3 的组合),数字 10 变成“w.subboreal0"(1 和 0 的组合)。如何确保将两位数视为一个数字,而不是两个单独的个位数字被替换? 谢谢!

最佳答案

为什么不直接使用 factor 中的 labels

set.seed(1)
x <- sample(c(1, 2, 3, 5, 10, 11, 13), 20, TRUE)
x
#  [1]  2  3 10 13  2 13 13 10 10  1  2  2 10  3 11  5 11 13  3 11
factor(x, levels = c(1, 2, 3, 5, 10, 11, 13), 
       labels = c("w.subboreal", "PICO", "ABLA.PIEN", "dry.forest", 
                  "shrubby", "agriculture", "disturbed"))
#  [1] PICO        ABLA.PIEN   shrubby     disturbed   PICO        disturbed   disturbed  
#  [8] shrubby     shrubby     w.subboreal PICO        PICO        shrubby     ABLA.PIEN  
# [15] agriculture dry.forest  agriculture disturbed   ABLA.PIEN   agriculture
# Levels: w.subboreal PICO ABLA.PIEN dry.forest shrubby agriculture disturbed

关于用数据框中的文本替换数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21557685/

相关文章:

r - ggplot中的条形图

r - 无法在 R 中下载 'digest' 包

regex - 如何在通过 R 中的正则表达式匹配找到字母后将其替换为小写字母

C# - 计算字符串长度并将每个字符替换为另一个

regex - "opposite"结果的正则表达式

通过引用 data.table r 中的列值删除行

c# - 如何将字符串中的 [city] 替换为 [City]

android - 从某个点开始解析字符串

ruby - 使用 Ruby 正则表达式用常规双引号转义 '“'

r - 仅当字符串在 R 中出现多次时,如何使用替换第一次出现的字符串?