kosugitti
「国語の試験の成績を A, B, C, D にする」ということですけど ifelse は面倒。cut も面倒。findInteval がよい。ついでに,途中結果を代入したりしないで,直接 factor 関数に引き渡す。
何回も,同じ変数名(しかも長い)を入力するのは面倒(間違っても直せばよいだけだけど)。あとでプログラムを読み直すときに長い名前はわずらわしい。longlongname と longlongname2 なんてあると,間違えるのが必至。
というようなことで,以下のように。
だいじなこと。「先生!わたし,80点なのに B になります」
分かりやすくプログラミングするとミスも減る。念のためにテストデータで正しい答えになることを確認。
> sample <- data.frame(kokugo = c(0, 1, 58:62, 68:72, 78:82, 98:100))
> sample$kokugo.class <- ifelse(sample$kokugo > 80, 1, ifelse(sample$kokugo > 70, 2, ifelse(sample$kokugo > 60, 3, 4)))
> sample$kokugo.class <- factor(sample$kokugo.class, labels = c("A", "B", "C", "D"))
> sample$kokugo.class2 <- factor(cut(sample$kokugo, breaks = c(-1, 59, 69, 79, 101)), labels = LETTERS[4:1])
> sample$kokugo.class3 <- factor(findInterval(sample$kokugo, c(60, 70, 80)), labels = LETTERS[4:1])
> sample
kokugo kokugo.class kokugo.class2 kokugo.class3
1 0 D D D
2 1 D D D
3 58 D D D
4 59 D D D
5 60 D C C
6 61 C C C
7 62 C C C
8 68 C C C
9 69 C C C
10 70 C B B
11 71 B B B
12 72 B B B
13 78 B B B
14 79 B B B
15 80 B A A
16 81 A A A
17 82 A A A
18 98 A A A
19 99 A A A
20 100 A A A
※コメント投稿者のブログIDはブログ作成者のみに通知されます