Вырезать и сортировать созданные данные - PullRequest
2 голосов
/ 07 мая 2019

У меня есть этот фрейм данных.

df <- read.table(text="
  amount      nr      date
  50          1       2017-01-01
  150         1       2017-01-03
  1500        2       2017-01-04
  1450        2       2017-01-04
  1250        2       2017-01-04
  950         1       2017-02-05
  120         3       2017-02-06
  300         3       2017-04-06
  ", header=TRUE)

Я бы хотел сократить столбец количества на 100 с и создать из него новый столбец.Я использовал

df %>% mutate(
    bin_nr = cut(amount, breaks = seq(50, 1500, 100))
  )

Но по какой-то причине я получаю не просто (50,150], а даже <NA> (если сумма 1500 или 50) и (1.15e+03,1.25e+03]

Так что вопрос 1) как получить (50,150] даже для суммы 50 и четырехзначного nrs (1400,1500] 2) как отсортировать этот вновь созданный столбец bin_nr по значению.Другими словами, можно сортировать значения от самого маленького (самого большого) до самого большого (самого маленького).

Ответы [ 2 ]

2 голосов
/ 07 мая 2019

Вы можете использовать опцию include.lowest = T функции вырезания и добавить старшего, рожденного в 1550 году, чтобы иметь 1500. Это более или менее дубликат с:

cut () - включает самый низкийзначения

2 голосов
/ 07 мая 2019

Чтобы избежать значений NA, укажите breaks с -Inf и Inf в начале / конце seq (в случае, если есть значения за пределами диапазона) и убедитесь, что dig.lab изменено из настроек по умолчанию, чтобы не печатать с научной нотацией

library(dplyr)
options(scipen = 999)
df %>%
   mutate(bin_nr = cut(amount, breaks = c(-Inf, 
        seq(50, 1500, 100), Inf), dig.lab = 5))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...