У меня есть такой набор данных:
sum_col city scen model time_period chill_season
110.02 NY RCP_8 bcc 2076_2099 season_2085_2086
91.26 NY RCP_8 bcc 2076_2099 season_2086_2087
91.05 NY RCP_8 bcc 2076_2099 season_2087_2088
74.96 NY RCP_8 bcc 2076_2099 season_2088_2089
77.97 NY RCP_8 bcc 2076_2099 season_2089_2090
109.05 NY RCP_8 bcc 2076_2099 season_2090_2091
Я хочу cut
столбец sum_col
и подсчитать, сколько раз значения попадают в каждый интервал bks = c(-300, seq(20, 75, 5), 300)
.
Однако, когда я пытаюсь сделать следующее:
result <- dt %>%
mutate(thresh_range = cut(sum_col, breaks = bks)) %>%
group_by(time_period, thresh_range, model, scen, city) %>%
summarize(no_years = n_distinct(chill_season, na.rm = FALSE)) %>%
data.table()
мой результат выглядит так:
time_period thresh_range model scen city no_years
2076_2099 (70,75] bcc RCP_8 NY 1
2076_2099 (75,300] bcc RCP_8 NY 5
Итак, интервалы меньше 70
, например (20, 25), (25, 30)
, не создаются (потому что в данных нет ни одной строки, попадающей в эти интервалы).
Можно ли в любом случае сказать cut
, возвращать ноль для этих интервалов?
Обратите вниманиеопять же, что строка, похожая на следующую:
a_value_leass_than_70_here NY RCP_8 bcc 2076_2099 chill_2076_2077
, чье значение sum_col
меньше 70, не существует в данных, однако мне было интересно, возможно ли такоеИз существующих данных cut
может создать 0
или NA
, который сообщает нам температуру Нью-Йорка, причем эти параметры действительно не попадают в интервал (20, 25)
.
Суть в том, что я хочучтобы увидеть, сколько лет каждый город с заданным набором параметров (model, scen, etc)
попадает в каждый интервал, (20, 25), (25,30), etc.
,
Если какое-либо предложение, отличное от cut
, работает, то это тоже замечательно.