如何用数据框中每行的文本替换数字?

时间:2015-10-17 09:35:08

标签: r dataframe

我有一个这样的数据框:

 id status
241 1
451 3
748 3
469 2
102 3
100 1
203 2

现在我要做的是:

1对应'good',2对应'moderate',3对应'bad'。

所以我的输出应该是这样的:

 id status
241 good
451 bad
748 bad
469 moderate
102 bad
100 good
203 moderate

怎么做?我尝试使用if if来做到这一点,但它变得越来越复杂。

2 个答案:

答案 0 :(得分:2)

听起来你想要一个标记因素。你可以尝试:

df$status <- factor(df$status, labels=c('Good','Moderate','Bad'))

> df
   id   status
1 241     Good
2 451      Bad
3 748      Bad
4 469 Moderate
5 102      Bad
6 100     Good
7 203 Moderate

答案 1 :(得分:0)

这取决于状态列的类型。如果它们不是因素,你可以做(​​如Pascal所指出的)

level<-c("Good","Moderate","Bad")
df$status<-level[df$status]

数据

df<-data.frame(item=c("apple","banana","orange","papaya","mango"),grade=c(1,3,2,1,3),stringsAsFactors=FALSE)

如果它被设置为因子,你可以(正如杰伊所指出的)

df$status<-factor(df$status, labels=c('Good','Moderate','Bad'))

数据

df<-data.frame(item=c("apple","banana","orange","papaya","mango"),grade=c(1,3,2,1,3),stringsAsFactors=TRUE)