R - Как добавить сумму определенного вхождения в одном столбце в другой столбец - PullRequest
0 голосов
/ 06 декабря 2018

Использование R.

Это небольшое подмножество моего набора данных, упрощенное для отображения только соответствующих столбцов.Данные взяты из Capital Bikeshare.В приведенном ниже столбце Start.Date указано точное время аренды велосипеда.

Start.date              Member.type
2018-11-01 00:00:45     Member
2018-11-01 00:00:52     Casual
2018-11-01 00:01:46     Member
2018-11-01 01:00:02     Casual
2018-11-01 01:03:36     Member

Я пытаюсь сгруппировать все данные по дате, часу дня, номеру каждого типа участника иобщее количество типов участников (casual + member) за любой час любого дня.Итак, в итоге у меня будет просто «День - Час - Количество арендных плат для каждого типа участника», чтобы я мог предсказать тренды на час дня,

Вот мой соответствующий код

library(dplyr)
bikeData <- read.csv("2011data.csv")

bikeData <- bikeData %>%
  mutate(Hour = format(strptime(
    bikeData$Start.date, "%Y-%m-%d %H:%M:%S"), "%m-%d %H")) %>%
  mutate(day = wday(Start.date, label=TRUE)) 

groupData <- bikeData %>%
  mutate(Start.date = ymd_hms(Start.date)) %>%
  count(date1 = as.Date(Start.date), Hour1 = hour(Start.date),
        member=(Member.type)) %>%
  group_by(date1, Hour1) %>%
  arrange(date1, Hour1) %>%
  summarise(total=sum(n))

Это дает мне новый набор данных, groupData

date1          Hour1     total 
2018-11-01         0        82
2018-11-01         1        43 
2018-11-01         2        17 
2018-11-01         3         4   
2018-11-02         0         5 
2018-11-02         1        24   

Таким образом, я смог сделать общее количество Member + Casual за все 24 часа каждого дня моего набора данных, но какя получу еще два столбца, которые показывают общее количество случайных и еще один, который показывает общее количество участников?Спасибо!

Желаемый ниже:

date1          Hour1     total     Casual     Member
2018-11-01         0        82        40          42
2018-11-01         1        43        20          23
2018-11-01         2        17        10           7
2018-11-01         3         4         1           3
2018-11-02         0         5         1           4
2018-11-02         1        24        20           4

1 Ответ

0 голосов
/ 06 декабря 2018
groupData <- bikeData %>%
  mutate(Start.date = ymd_hms(Start.date)) %>%
  count(date1 = as.Date(Start.date), Hour1 = hour(Start.date),
        member=(Member.type)) %>%
  group_by(date1, Hour1) %>%
  arrange(date1, Hour1) %>%
  summarise(total=sum(n),members=sum(Member.type=="Member"),casuals=sum(Member.type=="Casual"))

Вы можете просто добавить к своему итоговому вызову две переменные, которые подсчитывают логические вхождения Member.type, равные каждой из опций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...