我有一个这样的数据框:
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来做到这一点,但它变得越来越复杂。
答案 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)