如何替换因子变量?

时间:2019-05-08 14:30:04

标签: r

我使用的数据集具有三个级别:N,S和U,分别代表不吸烟者,吸烟者和不吸烟者。

如何用“ Unismoker”代替U。新的级别将是:N,S和Unismoker。

这是我尝试过的: 1)。 mort_data2$smoker[which(mort_data2$smoker=="U")] = levels("Unismoker")

2)。 levels(mort_data2$smoker)[which(mort_data2$smoker=="U")] = "Unismoker"

当我使用table(mort_data2$smoker)时,两种方法都会简单地返回

N 167
S 170
U 0 (was 181 before)

但是我想返回以下内容:

N 167
S 170
Unismoker 181

2 个答案:

答案 0 :(得分:0)

只需使用levels

# Example df
a=data.frame(a=c(rep("N",10),rep("S",20),rep("U",30)))
> str(a)
'data.frame':   60 obs. of  1 variable:
 $ a: Factor w/ 3 levels "N","S","U": 1 1 1 1 1 1 1 1 1 1 ...

> levels(a$a)
[1] "N" "S" "U"

levels(a$a)[3] = "Unismoker"

> summary(a)
         a     
 N        :10  
 S        :20  
 Unismoker:30  

答案 1 :(得分:0)

您可以使用带有levels<-的命名列表来替换项目。即使您没有更改,您也必须为每个级别指定内容。

x <- factor(c("N","S","U"))
levels(x) <- list(N="N",S="S",Unismoker="U")
x
[1] N         S         Unismoker
Levels: N S Unismoker