我使用的数据集具有三个级别: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
答案 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