Есть ли способ записать эти несколько точек разрыва (с одинаковой длиной шага) в функцию R вырезать более эффективно? - PullRequest
2 голосов
/ 31 января 2020

Это то, что я сделал, и это дает желаемый результат, но очень неэффективно.

cut(df1$wage, breaks = c(-Inf, 20000,21000,22000,23000,24000,25000,26000,27000,28000,29000,30000, Inf), 
         include.lowest=TRUE, dig.lab=10, labels = c("-20 000", "20 000-21 000", "21 000-22 000", "22 000-23 000", "23 000-24 000",
                                                    "24 000-25 000", "25 000-26 000", "26 000-27 000", "27 000-28 000", "28 000-29 000", "29 000-30 000", "30 000-"))

Я хочу самый низкий бин, который включает все значения вплоть до некоторого указанного значения, в пример 20 000. И то же самое со всеми значениями выше 30 000.

И я хотел бы иметь возможность варьировать длину шага между точками разрыва, которые в примере сейчас равны 1000, скажем, 500, не имея явно указать все точки останова.

Оптимально, я бы также хотел, чтобы метки следовали указанным точкам разрыва, что в противном случае также становится очень неэффективным процессом

Для части разрыва я подошел близко к breaks = (seq(from = 20000, to = 30000, by = 1000)), но не смог t выяснить, как включить нижнюю и верхнюю ячейки, как в примере выше

1 Ответ

1 голос
/ 31 января 2020

Вы можете сохранить разрывы в векторе и использовать их в breaks и labels

breaks <- seq(from = 20000, to = 30000, by = 1000)

cut(df1$wage, breaks = c(-Inf, breaks Inf), include.lowest=TRUE, dig.lab=10, 
 labels = c(-20000, paste(head(breaks, -1), tail(breaks, -1), sep = "-"), "30000-"))
...