Как создать сводную таблицу авиабилетов? - PullRequest
0 голосов
/ 05 октября 2019

Мне нужно создать категориальные предикторы, рассчитав процент полетов в каждой категории. Создайте сводную таблицу со средним тарифом в каждой категории !! Для загрузки набора данных
ссылка

#Reading the Airfare file to the data table
airfare_df <- read.csv("Airfares.csv")

str(airfare_df)

data.frame: 638 obs. of  18 variables:
 $ S_CODE  : chr  "*" "*" "*" "ORD" ...
 $ S_CITY  : chr  "Dallas/Fort Worth   TX" "Atlanta             GA" "Boston              MA" "Chicago             IL" ...
 $ E_CODE  : chr  "*" "*" "*" "*" ...
 $ E_CITY  : chr  "Amarillo            TX" "Baltimore/Wash Intl MD" "Baltimore/Wash Intl MD" "Baltimore/Wash Intl MD" ...
 $ COUPON  : num  1 1.06 1.06 1.06 1.06 1.01 1.28 1.15 1.33 1.6 ...
 $ NEW     : int  3 3 3 3 3 3 3 3 3 2 ...
 $ VACATION: chr  "No" "No" "No" "No" ...
 $ SW      : chr  "Yes" "No" "No" "Yes" ...
 $ HI      : num  5292 5419 9185 2657 2657 ...
 $ S_INCOME: num  28637 26993 30124 29260 29260 ...
 $ E_INCOME: num  21112 29838 29838 29838 29838 ...
 $ S_POP   : int  3036732 3532657 5787293 7830332 7830332 2230955 3036732 1440377 3770125 1694803 ...
 $ E_POP   : int  205711 7145897 7145897 7145897 7145897 7145897 7145897 7145897 7145897 7145897 ...
 $ SLOT    : chr  "Free" "Free" "Free" "Controlled" ...
 $ GATE    : chr  "Free" "Free" "Free" "Free" ...
 $ DISTANCE: int  312 576 364 612 612 309 1220 921 1249 964 ...
 $ PAX     : int  7864 8820 6452 25144 25144 13386 4625 5512 7811 4657 ...
 $ FARE    : num  64.1 174.5 207.8 85.5 85.5 ...

table(airfare_df$VACATION)
str(airfare_df)
drop <- c("S_CODE","E_CODE","S_CITY","E_CITY")
AFare.df = airfare_df[,!(names(airfare_df) %in% drop)]

# Frequency Table by multiple categorical variables
# convert to numerical variable to categorical
AF.df$PAX.bin <- .bincode(AF.df$PAX, c(1:9))

    ### compute the average of MEDV by (binned) RM and CHAS
aggregate(AF.df$FARE, by=list(rm=AF.df$PAX.bin ), FUN=mean) 

Мне нужно создать сводную таблицу со средним тарифом в каждой категории. Получение этой ошибки: Error in aggregate.data.frame(as.data.frame(x), ...) : arguments must have same length

Ответы [ 2 ]

1 голос
/ 05 октября 2019

Я не совсем уверен, что вы пытаетесь сделать, но это дает средние тарифы в каждой из 9 категорий PAX.

aggregate(AF.df$FARE, 
          by=list(cut(AF.df$PAX,9 )), 
          FUN=mean)

Ваше заявление .bincode() создаетвектор всех значений NA, потому что ваши разрывы охватывают только диапазон 1-9, а диапазон PAX составляет от 1504 до 73892.

0 голосов
/ 05 октября 2019

Опция, использующая dplyr

library(dplyr)
AF.df %>%
   group_by(grp = cut(PAX, 9)) %>%
   summarise(Mean = mean(FARE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...