2016-08-13 4 views
2

私は、それらの範囲に基づいて値をラベル付けしようとしています。だから、私は、それらの手段に等級を割り当てる低いカットオフとして使用する平均クイズスコアのデータフレーム、および数値のデータフレームがある場合:私は私がcutを使用することができるだろうと思ったなぜ私のラベルに `cut`オブジェクトがありますか?

grades <- read.table(text="Student Mean 
Adam 94 
Amanda 85.5 
James 81 
Noah 72.8333333333333 
Zach 57.5", header = TRUE) 

letters <- read.table(text = "Letter Cutoff 
A 90 
B 80 
C 70 
D 60 
F 0", header = TRUE) 

をそれぞれに等級を割り当てる。

私はこれらをバケットにcutを使用することができますが、私は2つの腹立たしい問題に遭遇しています:

まず、これらのカットオフは最小ではなく、最大値であり、私はそれをシフトする方法が表示されません。そして、第二に、cutは文字の等級をラベルとして使用したくない。私がこれを行うと、lengths of 'breaks' and 'labels' differというエラーが出ます。

cut(grades$Mean, 
    breaks = letters$Cutoff, 
    labels = letters$Letter, 
    right = FALSE) 

私はエラーが発生します。この方法でラベルに値を割り当てるにはcutを使用できますか?

+2

あなたのブレーク定義では、スコア> 90を考慮しません。 'cut(平均)、breaks = c(100,90,80,70,60、0)、labels = rev(文字$レター)、right = FALSE) – Dave2e

答えて

4

ベクトルはlabelsベクトルよりも1つ長い必要があります。カテゴリごとに下限カットオフと上限カットオフの両方が必要です。 breaksベクトルの最後に100(上限)をタックします(正確に100のスコアがあれば100.5にする必要があるかもしれません)。上のコメントで指摘したように、あなたは昇順で休憩を取るべきです。

cut(grades$Mean, 
    breaks = c(rev(letters$Cutoff),100), 
    labels = rev(letters$Letter), 
    right = FALSE) 
## [1] A B B C F 
## Levels: F D C B A 
+0

実際のデータがきれいではないので、私は 'c(rev(letters $ Cutoff)、max(grades $ Mean)+ 1)'と一緒に行った。しかし、それはまだ動作します。 – Amanda

関連する問題