2017-05-17 11 views
0

私は非常に基本的なことを実行しようとしていますが、私は何か間違っているように見えます。私の目標は、データフレーム内の給与変数の値を低、中、高に分類することです。しかし、私がやっているやり方は、意図した結果が得られていない。私が間違っているところを指摘してください。データフレーム内の特定の変数の値をバケット化

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" 

Iは、のmedと同じ高100よりも大きい値として60までの30から給与の値が100になるまで60以上の低、値として分類することにしたいです。しかし、私の上記のコードは、この結果を生成します。

サンプル$給与

「[1]「ハイ」「ハイ」「ハイ」「ハイ」「ハイ」「100」「高」」高

ここで私は間違っていますか?あらかじめお詫び申し上げますが、これは非常に単純なことかもしれません。私はここで何か間違っていなければなりません。

+3

"媒体" を与えます。このタイプの操作のために設計されています。 'cut(Salary、c(30,60,100、Inf)、labels = c(" low "、" med "、" high ")、include.lowest = TRUE)' – lmo

+2

最初の置換は、列全体を '文字 'に暗黙的に変換する –

答えて

0

あなたの質問の回答を見つけてください。常にこの機能を書くようにしてください。

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)の代わりに `cut`を使用

関連する問題