函数更改R中因子变量的级别
我在数据框函数更改R中因子变量的级别,r,categorical-data,levels,R,Categorical Data,Levels,我在数据框oldata中有一个带系数的变量Clic_1。我想写一个函数,它将改变因子变量的值 head(oldata$CliC_1) [1] 4 1 5 3 5 5 Levels: 1 2 3 4 5 我尝试了这个函数,但它给出了NA try<- function (data,var){ for (i in 1:nrow(data)){ if (var[i]== "1"){ var[i]<- "Good"
oldata
中有一个带系数的变量Clic_1
。我想写一个函数,它将改变因子变量的值
head(oldata$CliC_1)
[1] 4 1 5 3 5 5
Levels: 1 2 3 4 5
我尝试了这个函数,但它给出了NA
try<- function (data,var){
for (i in 1:nrow(data)){
if (var[i]== "1"){
var[i]<- "Good"
} else {var[i]<- "Bad"}
}
return (var)
}
try您不需要自定义函数或relevel
。只需使用ifelse
:
factor(ifelse(oldata$CliC_1==1, 'Good', 'Bad'))
# Bad Good Bad Bad Bad Bad
另一种方法是
factor(oldata$CliC_1 != 1, labels = c('Good', 'Bad'))
# [1] Bad Good Bad Bad Bad Bad
# Levels: Good Bad
非常感谢。但是,我也想知道我在这个函数中犯了什么错误?你有什么线索吗?而且,如果我有两个以上的级别,例如“good”、“mediate”、“bad”,那么你的函数对我来说运行良好。只需将它包装到factor
中,如return(factor(var))
并调用其他名称,因为try
在R中已经存在函数。除此之外,您的函数没有矢量化,因此最好使用其他方法。如果您需要其他级别,它将变得比简单的布尔条件更复杂。