Это наблюдение на этот вопрос:Изменить Перерывы в функции cut2 в пакете Hmisc
Dataframe Aggregation By Group - Separating a Column's Values by Ranges
Ответ при условии, использует Hmisc::cut2
, который прекрасно работает! Я хочу изменить разрывы, чтобы вместо того, чтобы ломаться на 1 доллар, он ломается на 0,50 доллара.
Ниже приведен код, предоставленный для ответа:
library(Hmisc)
library(dplyr)
df$cut_Price <- cut2(df$Price, cuts = 4:13)
df %>% group_by(cut_Price, Size, Type) %>%
summarise_at(c("Opps", "NumberofSales", "Revenue"),"sum") %>%
arrange(Size, cut_Price) %>% ungroup() %>%
mutate(cut_Price = gsub("(.*, \\d\\.)00", "\\199", cut_Price))
# A tibble: 16 × 6
cut_Price Size Type Opps NumberofSales Revenue
<chr> <fctr> <fctr> <dbl> <dbl> <dbl>
1 [ 5.00, 6.99) LARGE desktop 477870 342455 2037.67
2 [ 6.00, 7.99) LARGE desktop 842882 523309 3292.29
3 [ 7.00, 8.99) LARGE desktop 283107 149878 1189.56
4 [10.00,11.00) LARGE desktop 5506835 1179544 12674.17
5 [11.00,12.00) LARGE desktop 3542187 1521347 17342.81
6 [ 3.63, 4.99) MEDIUM desktop 6038044 5129937 18617.94
7 [ 5.00, 6.99) MEDIUM desktop 2558997 478423 2548.95
8 [ 7.00, 8.99) MEDIUM desktop 1071631 352294 2483.10
9 [ 9.00,10.00) MEDIUM desktop 2510873 861183 8428.70
10 [10.00,11.00) MEDIUM desktop 441354 215643 2322.70
11 [11.00,12.00) MEDIUM desktop 5144351 1954720 22138.16
12 [ 3.63, 4.99) SMALL desktop 801038 587541 2145.76
13 [ 4.00, 5.99) SMALL desktop 939806 303515 1214.60
14 [ 5.00, 6.99) SMALL desktop 8303927 2143565 11902.14
15 [10.00,11.00) SMALL desktop 920975 321515 3284.54
16 [11.00,12.00) SMALL desktop 181471 236643 2811.50
Любая помощь будет здорово, спасибо!
Изменить 'cuts' на' seq (4, 13, .5) '. Вам также нужно очистить 'gsub', если это имеет значение. – alistaire
Я пробовал это, но диапазоны только от [0,4) и [4, макс.]. Это сработало для вас? @alistaire –
Да. Все, что вам действительно нужно, это 'df%>% group_by (Размер, cut_Price = Hmisc :: cut2 (Цена, разрезы = seq (4, 13, .5)), Тип)%>% summaryiseat (c (" Opps ", «NumberofSales», «Доход»), сумма) ' – alistaire