bike_sharing

バイクシェアリングのデータを用いた演習

Q1:seasonごとのcntのnとmeanとs.d.を算出せよ

# 必要なパッケージを読み込みます
library(dplyr)
Warning: package 'dplyr' was built under R version 4.3.1

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
# データフレームを読み込みます
bike_sharing_daily <- read.csv("bike_sharing_daily.csv")

# seasonごとのcntのn、mean、s.d.を計算します
summary_stats <- bike_sharing_daily %>%
  group_by(season) %>%
  summarise(
    n = n(),
    mean = mean(cnt, na.rm = TRUE),
    s.d. = sd(cnt, na.rm = TRUE)
  ) %>%
  ungroup()

# 結果を表示します
print(summary_stats)
# A tibble: 4 × 4
  season     n  mean  s.d.
  <chr>  <int> <dbl> <dbl>
1 Fall     178 4728. 1700.
2 Spring   184 4992. 1696.
3 Summer   188 5644. 1460.
4 Winter   181 2604. 1400.
  1. パッケージの読み込み: dplyrパッケージを読み込みます。

  2. データの読み込み: read.csv関数でCSVファイルからデータを読み込みます。

  3. データの変換:

    • group_by(season)seasonごとにデータをグループ化します。

    • summarise()関数を使用して、cntの件数(n)、平均値(mean)、標準偏差(s.d.)を計算します。na.rm = TRUEを指定することで、NA値を無視して計算します。

    • ungroup()でグループ化を解除します(必須ではありませんが、後続の操作に影響しないようにするためです)。

  4. 結果の表示: print関数で結果を表示します。

Q2. 冬は曜日によってcntが違うんじゃないかな?

# 必要なパッケージを読み込みます
library(dplyr)

# データフレームを読み込みます
bike_sharing_daily <- read.csv("bike_sharing_daily.csv")

# seasonが冬のデータをフィルタリングし、曜日ごとにcntのn、mean、s.d.を計算します
winter_summary_stats <- bike_sharing_daily %>%
  filter(season == "Winter") %>%
  group_by(weekday) %>%
  summarise(
    n = n(),
    mean = mean(cnt, na.rm = TRUE),
    s.d. = sd(cnt, na.rm = TRUE)
  ) %>%
  ungroup()

# 結果を表示します
print(winter_summary_stats)
# A tibble: 7 × 4
  weekday     n  mean  s.d.
  <chr>   <int> <dbl> <dbl>
1 Fri        26 2856. 1058.
2 Mon        26 2453. 1347.
3 Sat        27 2432. 1575.
4 Sun        27 2229. 1260.
5 Thu        25 2894. 1504.
6 Tue        25 2793. 1557.
7 Wed        25 2611. 1462.
  1. パッケージの読み込み: dplyrパッケージを読み込みます。

  2. データの読み込み: read.csv関数でCSVファイルからデータを読み込みます。ファイルパスは適切なものに置き換えてください。

  3. データのフィルタリング:

    • filter(season == "Winter")seasonが「冬」のデータをフィルタリングします。
  4. グループ化と集計:

    • group_by(weekday)で曜日ごとにデータをグループ化します。

    • summarise()関数を使用して、グループごとのcntの件数(n)、平均値(mean)、標準偏差(s.d.)を計算します。na.rm = TRUEを指定することで、NA値を無視して計算します。

    • ungroup()でグループ化を解除します(必須ではありませんが、後続の操作に影響しないようにするためです)。

  5. 結果の表示: print関数で結果を表示します。

Q3.夏は気温によってcntが違うのでは?

# 必要なパッケージを読み込みます
library(dplyr)

# データフレームを読み込みます
bike_sharing_daily <- read.csv("bike_sharing_daily.csv")

# 夏のデータをフィルタリングし、気温の中央値でフラグを立て、集計します
summer_summary_stats <- bike_sharing_daily %>%
  filter(season == "Summer") %>%
  mutate(high_temp = temp > median(temp, na.rm = TRUE)) %>%
  group_by(high_temp) %>%
  summarise(
    n = n(),
    mean = mean(cnt, na.rm = TRUE),
    s.d. = sd(cnt, na.rm = TRUE)
  ) %>%
  ungroup()

# 結果を表示します
print(summer_summary_stats)
# A tibble: 2 × 4
  high_temp     n  mean  s.d.
  <lgl>     <int> <dbl> <dbl>
1 FALSE        94 5576. 1620.
2 TRUE         94 5713. 1285.