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

R 用数据框中的文本替换数字,r,replace,gsub,R,Replace,Gsub,我相信有一个简单的答案,但我一直在搜索,我找不到关于这个的任何东西 我有一个数据框(sdata),其中有一列名为“landcover”,这是一个分类变量,但到目前为止,每个landcover类型都由一个数字表示 我想用文本替换土地覆盖物编号代码,并已通过以下方式解决了部分问题: sdata$landcover<- as.factor(sdata$landcover) levels(sdata$landcover) <- gsub("1", "w.subboreal", levels(

我相信有一个简单的答案,但我一直在搜索,我找不到关于这个的任何东西

我有一个数据框(sdata),其中有一列名为“
landcover
”,这是一个分类变量,但到目前为止,每个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))

sdata$landcover为什么不直接使用
因子中的
标签

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
set.seed(1)
x
#create a factor based on num vector
v = rep(1:3,4)
v = factor(v) #this create a factor with level 1,2,3 and length 12
#replace the original level 1,2,3 to the name you wanted,suppose 1 represent "China", 2 represent "USA",3 "Spain"
level(v) = c("China","USA","Spain")
#if You just need a country vector instead of numbers or factors
v = as.character(v)