【问题标题】:Bucketing the values of a specific variale in a dataframe在数据框中存储特定变量的值
【发布时间】: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


【解决方案1】:

请为您的问题找到答案。始终尝试在函数中编写此内容。

salary = as.data.frame(c(30,40,50,60,80,100,200,300))


salary_condition = function(x){

if (x >30 & x <= 60){
print("low")
}else if(x>60 & x<=100){
 print("medium")
} else if(x>100){
print("High")
} else {
print("nothing")

} }

salary_condition(100) 将给出“中等”

【讨论】:

    猜你喜欢
    • 2022-11-14
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多