2016-03-06 2 views
1

У меня есть набор данных, который выглядит примерно включено следующее:Данные очистки в R

Date  Customer  Cost  Location 
1/2/15 Jon   $50  Sunnyvale, CA 
1/5/15 Jon   $125  Sunnyvale, CA 
1/15/15 Jon   $25  Sunnyvale, CA 
1/3/15 Martha  $30  Fresno, CA 
1/7/15 Martha  $40  Fresno, CA 
2/16/15 James  $30  Tempe, AR 
2/20/15 James  $70  Tempe, AR 

Я хочу, чтобы преобразовать в следующий формат, где каждая строка дает мне информацию, касающуюся одного клиента, его последний день заезда, чистые расходы, общее количество случаев и создает модель прибытия -

Date  Customer  Mean ITA(days) Frequency Cost Location 
1/15/15 Jon  6.5    3   $200  Sunnyvale, CA 
1/7/15  Martha  4     2   $70  Fresno, CA 
2/20/15 James  4     2   $100  Tempe, AR 

Любая помощь, выполняемая в R, оценивается. Я использую пакет tidyr, но не могу понять, как это сделать.

+1

Что такое ITA? Как вы считаете это? –

+1

Сначала узнайте, как преобразовать даты, затем узнайте, как использовать dplyr, в частности команду 'summaryize'. (Довольно уверен 'ITA = (последний (дата) - первый (дата))/n()' в случае, если кто-то его смущает) – Frank

+2

Как правило, с 'dplyr' вам понадобится' df%>% group_by (Customer, Location)%>% summary (...) ', где' ... '- это аргументы для построения всех нужных столбцов. Во-первых, очистите исходные данные; ваши даты не являются объектами даты, а ваши затраты не являются номерами, если у них есть '$'. Дайте нам знать, когда вы застрянете, и мы укажем вам в правильном направлении. – alistaire

ответ

0

Как подчеркнул Алистер, вам нужно dplyr, а не tidyr, для этого.

library(dplyr) 

df %>% 
    group_by(Customer) %>% 
    summarise(Frequency = n(), 
      Cost = sum(Cost), 
      ITA = (max(Date) - min(Date))/2, 
      Date = max(Date)) 
Customer Frequency Cost  ITA  Date 
    (fctr)  (int) (dbl) (dfft)  (date) 
1 James   2 100 2.0 days 2015-02-20 
2  Jon   3 200 6.5 days 2015-01-15 
3 Martha   2 70 2.0 days 2015-01-07 
Смежные вопросы