7

、、、 、 のようdata frameなレベルの要因があります。それらを回帰の範囲内の値を持つ整数列にマップし、いくつかの値を同じものにマップしたいと考えています。単語が、単語がなどにマップされるように、明示的なマッピングを指定できるようにしたいのですが、これをきれいに行うにはどうすればよいですか? 名前付きリストなどを渡すだけの関数が欲しいです。hotwarmtepidcoldvery coldfreezing[-2, 2]very hot2very cold-2

4

2 に答える 2

16

因子ベクトルxがカテゴリを保持していると仮定します。

temperatures <- c("hot", "warm", "tepid", "cold", "very cold", "freezing")
set.seed(1)
x <- as.factor(sample(temperatures, 10, replace=TRUE))
x
[1] warm     tepid    cold     freezing warm     freezing freezing cold    
[9] cold     hot     
Levels: cold freezing hot tepid warm

temp.mapマッピングを使用して数値ベクトルを作成します。「ホット」と「ウォーム」は、以下の同じ値にマップされることに注意してください。

temp.map <- c("hot"=2, "warm"=2, "tepid"=1, "cold"=0, "very cold"=-1, "freezing"=-1)    
y <- temp.map[as.character(x)]
y
warm    tepid     cold freezing     warm freezing freezing     cold 
   2        1        0       -1        2       -1       -1        0 
cold      hot 
   0        2 
于 2013-01-28T09:54:39.547 に答える
7

係数は、 を使用して簡単に整数に変換できますas.integer

例えば:

>temperatures <- c("Hot", "Warm", "Tiepid", "Cold", "Very cold", "Freezing")
> set.seed(12345)
> a <- sample(temperatures, 10, r=T)
> a <- factor(a, levels = temperatures)
> a
 [1] Very cold Freezing  Very cold Freezing  Tiepid    Hot       Warm     
 [8] Cold      Very cold Freezing 
Levels: Hot Warm Tiepid Cold Very cold Freezing
> as.integer(a)
 [1] 5 6 5 6 3 1 2 4 5 6

[-2;2] の範囲で必要な場合は、次のようにします。

> as.integer(a)-3
  [1]  2  3  2  3  0 -2 -1  1  2  3
于 2013-01-28T06:51:51.820 に答える