2014-11-25 81 views
1

我已經瀏覽了以前關於重新編碼的問題,並且無法找到我的問題的答案,因此我希望有人可以幫助我解決我的問題。重新編碼數據

以下數據以度爲單位表示,並顯示方面已分組到的不同類。我正在嘗試重新編碼這個變量,因此每個「圓的部分」都是從1-9編碼的。我可以轉換,如果出發點是從一個單一的數字,但在這種情況下,有一個範圍(eg0-22.5)參與我有點疑惑

Aspect 
0,22.5 (1) 
22.5,67.5 (2) 
67.5,112 (3) 
112,158 (4) 
158,202 (5) 
202,248 (6) 
248,292 (7) 
292,338 (8) 
338,360 (9) 

顯然,因爲這是基於方面的數據也是一個從0-360(圓)的連續標度。希望有人能幫助

+3

我認爲你正在尋找'切()'... – 2014-11-25 13:08:00

回答

1

只是爲了清晰度添加到@ BenBolker的評論上面:

df = data.frame("original" = 1:360) 
df$category = cut(df$original, 
        breaks = c(0, 22.5, 67.5, 112, 158, 202, 248, 292, 338, 360), 
        labels = 1:9) 

summary(df$category) 
+0

感謝澄清他的意見,但一旦突破已執行和每個人都有被分配到這些類別之一怎麼辦然後我重新編碼,例如0-22.5 = 1和67.5-112 = 2。希望你能幫到 – user1667816 2014-11-25 16:44:30

+0

更新我的代碼以包含標籤;欲瞭解更多信息,請使用'?cut' – JasonAizkalns 2014-11-25 17:26:21

+1

儘管如此,這仍然是一個因素;得到一個整數應用'as.integer'。 – Aaron 2014-11-25 17:28:24

1

請注意,您的類範圍看起來像他們稍微出由有時半度(可能是舍入誤差)。我會認爲每個區段應該與頂端2相距45度。

例如,

0,22.5 (1) 
22.5,67.5 (2) 
67.5,112.5 (3) 
112.5,157.5 (4) 
157.5,202.5 (5) 
202.5,247.5 (6) 
247.5,292.5 (7) 
292.5,337.5 (8) 
337.5,360 (9) 

如果您不介意這些新值,並且您正嘗試從度數中獲得該類,那麼您可以這樣做。

  1. 除以45
  2. 添加1
  3. 四捨五入至最接近的整數

例如230度

230/45 = 5.1111 
5.1111 + 1 = 6.1111 
round(6.111) = Class 6