重新编码数据

时间:2014-11-25 13:03:14

标签: r

我查看了之前有关重新编码的问题,但找不到我的问题的答案,因此我希望有人可以帮我解决问题。

以下数据以度数表示,并显示已分组方面的不同类别。我试图重新编码这个变量,所以每个“圆圈的一部分”编码从1-9。我可以转换它,如果起点是一个数字,但在这种情况下有一个范围(例如0-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(圆圈)的连续比例。希望有人可以提供帮助

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

请注意,您的课程范围看起来有时略微偏差半度(可能是舍入错误)。我原以为每个片段应该与前2个片段分开45度。

E.g。

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. 舍入到最接近的整数
  4. E.g。 230度

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