【发布时间】:2017-05-17 20:44:44
【问题描述】:
我正在尝试执行一件非常基本的事情,但看起来我做错了什么。我的目标是将我的数据框中的 Salary 变量的值分类为低、中和高。但我正在做的方式我没有得到预期的结果。你能指出我哪里做错了吗?
Salary<-c(30,40,50,60,80,100,200,300)
Sample<-data.frame(Salary)
Sample$Salary[Sample$Salary>=30 & Sample$Salary<=60]<-"low"
Sample$Salary[Sample$Salary>60& Sample$Salary<=100]<-"med"
Sample$Salary[Sample$Salary>100]<-"high"
我希望将 Salary 值从 30 到 60 归类为低,将高于 60 到 100 的值归类为 med,将大于 100 的值归类为高。但是我上面的代码产生了这个结果:
样本$薪水
[1]“高”“高”“高”“高”“高”“100”“高”“高”
那么我的错在哪里?提前道歉,这可能是一件非常简单的事情,我一定在这里做错了什么。
【问题讨论】:
-
请改用
cut。它专为此类操作而设计。这将起作用:cut(Salary, c(30, 60, 100, Inf), labels=c("low", "med", "high"), include.lowest = TRUE) -
第一次替换导致整个列隐式转换为
character
标签: r