From 88e4b8667197352d0e84b2c30154845a9de83c3e Mon Sep 17 00:00:00 2001 From: drishyashrestha Date: Thu, 29 May 2025 10:41:30 -0400 Subject: [PATCH 1/6] solutions with challenge --- week1/citibike.sh | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/week1/citibike.sh b/week1/citibike.sh index 25604f545..6b44fffbf 100755 --- a/week1/citibike.sh +++ b/week1/citibike.sh @@ -4,20 +4,58 @@ # # count the number of unique stations +#$ cut -d , -f4 201402-citibike-tripdata.csv | sort | uniq | wc -l +#330 + # count the number of unique bikes +#$ cut -d , -f12 201402-citibike-tripdata.csv | sort | uniq | wc -l +#5700 # count the number of trips per day +# $ cut -d , -f2 201402-citibike-tripdata.csv | cut -d' ' -f1 | sort | uniq -c | sort | head -n2 +# 1 starttime +# 876 2014-02-13 # find the day with the most rides + #$cut -d , -f2 201402-citibike-tripdata.csv | cut -d' ' -f1 | sort | uniq -c | sort -r | head -n1 + # 13816 2014-02-02 + # find the day with the fewest rides +#$cut -d , -f2 201402-citibike-tripdata.csv | cut -d' ' -f1 | sort | uniq -c | sort | head -n2 # find the id of the bike with the most rides +#$cut -d , -f12 201402-citibike-tripdata.csv | sort | uniq -c | sort -r | head -n1 # count the number of rides by gender and birth year +#$ cut -d, -f15,14 201402-citibike-tripdata.csv | sort | uniq -c | sort -r # count the number of trips that start on cross streets that both contain numbers (e.g., "1 Ave & E 15 St", "E 39 St & 2 Ave", ...) - +# $ cut -d, -f5 201402-citibike-tripdata.csv | tail -n +2 | grep -E '.*[0-9].*&.*[0-9].*' | wc -l +# 90549 # compute the average trip duration +# awk -F, {sum += $1; count++} END {print sum/count}' 201402-citibike-tripdata.csv +# 874.516 + + +#running average script for first 1000 lines +# $ head -n 1000 201402-citibike-tripdata.csv | awk '{ +# window[NR % 3] = $1 +# if (NR >= 3) { +# print (window[(NR-1)%3] + window[(NR-2)%3] + window[(NR-3)%3]) / 3 +# } +# }' + +#MUSICAL CHAIR in python +# import random + +# names = ["Alou", "Srijana", "Sara", "Drishya", "Dereck", "Ahmed", +# "Aisha", "Vaishnavi", "Naomi", "Sofia", "Ye", "Vanessa"] + +# random.shuffle(names) + +# for i in range(0, 12, 2): +# print(f"{names[i]} & {names[i+1]}") + From caa99dc729204a3e2352b8be0300d96d4dc95a89 Mon Sep 17 00:00:00 2001 From: drishyashrestha Date: Fri, 30 May 2025 08:51:25 -0400 Subject: [PATCH 2/6] R classwork --- week1/citibike.R | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/week1/citibike.R b/week1/citibike.R index ad01de1d3..905c58264 100644 --- a/week1/citibike.R +++ b/week1/citibike.R @@ -5,8 +5,13 @@ library(lubridate) # READ AND TRANSFORM THE DATA ######################################## + + + # read one month of data -trips <- read_csv('201402-citibike-tripdata.csv') +trips <- read_csv('./coursework/week1/201402-citibike-tripdata.csv') +##viewing the data +view(trips) # replace spaces in column names with underscores names(trips) <- gsub(' ', '_', names(trips)) @@ -23,19 +28,42 @@ trips <- mutate(trips, gender = factor(gender, levels=c(0,1,2), labels = c("Unkn ######################################## # count the number of trips (= rows in the data frame) +nrow(trips) + # find the earliest and latest birth years (see help for max and min to deal with NAs) -# use filter and grepl to find all trips that either start or end on broadway +#converting birth_year into numbers +trips$birth_year <- as.numeric(trips$birth_year) +max(trips$birth_year, na.rm = TRUE) +min(trips$birth_year, na.rm = TRUE) +# use filter and grepl to find all trips that either start or end on broadway +filtered_df <- filter(trips, grepl("Broadway", start_station_name) | grepl("Broadway",end_station_name)) +view(filtered_df) # do the same, but find all trips that both start and end on broadway - +filtered_both_df <- filter(trips, grepl("Broadway", start_station_name) & grepl("Broadway",end_station_name)) +nrow(filtered_both_df) # find all unique station names +#stupid idea nrow(distinct(trips[ ,"start_station_name"])) + nrow(distinct(trips[ ,"end_station_name"])) + +union(trips$start_station_name, trips$end_station_name) # count the number of trips by gender, the average trip time by gender, and the standard deviation in trip time by gender # do this all at once, by using summarize() with multiple arguments +grouped_df <- trips %>% + group_by(gender)%>% + summarize(num_trips = n(), + average_trip = mean(tripduration)/60, + standard_deviation = sd(tripduration)/60) +grouped_df + + + # find the 10 most frequent station-to-station trips +frequent_df <- trips %>% + arrange() # find the top 3 end stations for trips starting from each start station From a7292404850311463c5f307fe305b8dccd4962b2 Mon Sep 17 00:00:00 2001 From: drishyashrestha Date: Mon, 2 Jun 2025 17:05:57 -0400 Subject: [PATCH 3/6] plot trips --- week1/plot_trips.R | 113 ++++++++++++++++++++++++++++++--------- week2/#DAY 5 Exercises.r | 53 ++++++++++++++++++ 2 files changed, 142 insertions(+), 24 deletions(-) create mode 100644 week2/#DAY 5 Exercises.r diff --git a/week1/plot_trips.R b/week1/plot_trips.R index ea92d462c..39bc5e1ee 100644 --- a/week1/plot_trips.R +++ b/week1/plot_trips.R @@ -66,13 +66,20 @@ trips%>% # plot the ratio of male to female trips (on the y axis) by age (on the x axis) # hint: use the pivot_wider() function to reshape things to make it easier to compute this ratio # (you can skip this and come back to it tomorrow if we haven't covered pivot_wider() yet) - - +trips %>% mutate(age = as.numeric(format(ymd, "%Y")) - as.numeric(birth_year)) %>% + group_by(age, gender) %>% summarise(num_trips = n(), .groups = "drop")%>% + pivot_wider(names_from = gender, values_from = num_trips) %>% mutate(male_to_female = Male/ Female) %>% + ggplot( aes(age, male_to_female))+ geom_line(color = "steelblue", size = 1) + + geom_smooth( color = "red", linetype = "dashed") + + scale_x_log10()+ + labs(x = "AGE", y = "Male to Female Ratio", title = "Male/Female trip ratio by Age") + + theme_minimal() ######################################## # plot weather data ######################################## # plot the minimum temperature (on the y axis) over each day (on the x axis) +view(weather) weather%>% ggplot(aes(x= ymd, y= tmin, color=tmin))+ geom_point()+ @@ -86,7 +93,14 @@ weather%>% # plot the minimum temperature and maximum temperature (on the y axis, with different colors) over each day (on the x axis) # hint: try using the pivot_longer() function for this to reshape things before plotting # (you can skip this and come back to it tomorrow if we haven't covered reshaping data yet) +view(weather) +weather %>% pivot_longer(names_to = "temp_type", values_to = "temperature", cols = c(tmin,tmax)) %>% + ggplot(aes(ymd, temperature, color= temp_type))+ geom_line() + scale_x_date() + labs( + x = "Date", + y = "Temperature", + color = "Temperature Type", + title = "Daily Min and Max Temperatures") @@ -102,48 +116,99 @@ head(trips_with_weather) # plot the number of trips as a function of the minimum temperature, where each point represents a day # you'll need to summarize the trips and join to the weather data to do this -trips %>% - mutate(date = as.Date(starttime)) %>% - count(date) %>% - inner_join(weather, by = c("date" = "ymd")) %>% - ggplot(aes(x = tmin, y = n)) + - geom_point() + - labs(x = "Minimum Temperature", y = "Number of Trips", title = "Trips vs. Min Temperature") - - -# trips%>% -# group_by(ymd)%>% -# summarise(num_trips = n())%>% -# inner_join(weather, by ='ymd') %>% -# ggplot(aes(x= mean(tmin),y=num_trips))+ +str(weather) +head(trips) +trips_with_weather %>% + group_by(ymd,tmin)%>% + summarise(num_trips = n(), .groups = "drop")%>% + ggplot(aes(tmin, num_trips))+geom_point() + +#works only for this data frame since tmin is not different +# trips_by_day <- trips %>% +# mutate(date = as.Date(starttime)) %>% +# group_by(date)%>% +# summarise(num_trips = n()) +# weather %>% +# mutate(date = as.Date(date))%>% +# inner_join(trips_by_day,weather_by_day, by ='date') %>% +# ggplot(aes(x= mean(tmin),y= num_trips))+ # geom_point() + # labs(x = "Minimum Temperature", y = "Number of Trips", # title = "Trips vs. Min Temperature") # repeat this, splitting results by whether there was substantial precipitation or not # you'll need to decide what constitutes "substantial precipitation" and create a new T/F column to indicate this - +trips_with_weather %>% + mutate(precptf = ifelse(prcp > mean(prcp), 'T', 'F'))%>% + group_by(ymd,tmin, precptf)%>% + summarise(num_trips = n(), .groups = "drop")%>% + ungroup()%>% + ggplot(aes(tmin, num_trips))+geom_point() + + labs( x = "number of trip", + y = "minimum temp", + title = "Substantial precipitation on num of trips") + + facet_wrap(~precptf) + # add a smoothed fit on top of the previous plot, using geom_smooth +trips_with_weather %>% + mutate(precptf = ifelse(prcp > mean(prcp), 'T', 'F'))%>% + group_by(ymd,tmin, precptf)%>% + summarise(num_trips = n(), .groups = "drop")%>% + ungroup()%>% + ggplot(aes(tmin, num_trips))+geom_point() + geom_smooth()+ + labs( x = "number of trip", + y = "minimum temp", + title = "Substantial precipitation on num of trips") + + facet_wrap(~precptf) # compute the average number of trips and standard deviation in number of trips by hour of the day # hint: use the hour() function from the lubridate package +library(lubridate) + +trips_with_weather %>% + mutate(hour = hour(starttime), + date = as.Date(starttime))%>% + group_by(hour,date)%>% + summarise(num_trips = n(), .groups = "drop")%>% + group_by(hour)%>% + summarise( + average_trips = mean(num_trips), + sd_trips = sd(num_trips)) # plot the above +trips_with_weather %>% + mutate(hour = hour(starttime), + date = as.Date(starttime))%>% + group_by(hour,date)%>% + summarise(num_trips = n(), .groups = "drop")%>% + group_by(hour)%>% + summarise( + average_trips = mean(num_trips), + sd_trips = sd(num_trips)) %>% + ggplot( aes(hour, average_trips))+ + geom_line(color = "red") + geom_ribbon(aes(ymin = average_trips - sd_trips, ymax = average_trips + sd_trips), alpha = 0.25)+ + labs( + x = "Hour of Day", + y = "Average Number of Trips", + title = "Average Number of Trips by Hour with ±1 SD Ribbon", + subtitle = "Red line: Mean trips per hour; Blue ribbon: ±1 standard deviation" + ) + + theme_minimal() + # repeat this, but now split the results by day of the week (Monday, Tuesday, ...) or weekday vs. weekend days # hint: use the wday() function from the lubridate package -by_week <- trips %>% +trips %>% mutate( hour = hour(starttime), day = as.Date(starttime), - weekday = wday(starttime, label =TRUE) - )%>% + weekday = wday(starttime, label =TRUE) )%>% group_by(hour, weekday, day)%>% summarise(trip_count = n(), .groups = "drop")%>% - summarise( - average = mean(trip_count), - standDev = sd(trip_count), + group_by(hour,weekday)%>% + summarise(average = mean(trip_count), + standarddev = sd(trip_count), .groups = "drop") -by_week \ No newline at end of file + diff --git a/week2/#DAY 5 Exercises.r b/week2/#DAY 5 Exercises.r new file mode 100644 index 000000000..f92679f99 --- /dev/null +++ b/week2/#DAY 5 Exercises.r @@ -0,0 +1,53 @@ +#DAY 5 Exercises + +## Combining and reshaping exercises + +#12.2.1 Exercises +# Compute the rate for table2, and table4a + table4b. You will need to perform four operations: + +# Extract the number of TB cases per country per year. +# Extract the matching population per country per year. +# Divide cases by population, and multiply by 10000. +# Store back in the appropriate place. +# Which representation is easiest to work with? Which is hardest? Why? + + + + + + +# 12.3.3 Exercises + +# Why are pivot_longer() and pivot_wider() not perfectly symmetrical? +# Carefully consider the following example: + +# stocks <- tibble( +# year = c(2015, 2015, 2016, 2016), +# half = c( 1, 2, 1, 2), +# return = c(1.88, 0.59, 0.92, 0.17) +# ) +# stocks %>% +# pivot_wider(names_from = year, values_from = return) %>% +# pivot_longer(`2015`:`2016`, names_to = "year", values_to = "return") +# (Hint: look at the variable types and think about column names.) + +# pivot_longer() has a names_ptypes argument, e.g. names_ptypes = list(year = double()). What does it do? + + + + + + + + +#What would happen if you widen this table? Why? How could you add a new column to uniquely identify each value? + +people <- tribble( + ~name, ~names, ~values, + #-----------------|--------|------ + "Phillip Woods", "age", 45, + "Phillip Woods", "height", 186, + "Phillip Woods", "age", 50, + "Jessica Cordero", "age", 37, + "Jessica Cordero", "height", 156 +) \ No newline at end of file From 244541e97bb7698351143a71734c13c46821f088 Mon Sep 17 00:00:00 2001 From: drishyashrestha Date: Mon, 16 Jun 2025 16:12:09 -0400 Subject: [PATCH 4/6] model --- week4/model.RData | Bin 0 -> 19801 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 week4/model.RData diff --git a/week4/model.RData b/week4/model.RData new file mode 100644 index 0000000000000000000000000000000000000000..179337e5e1432effe00eeef3a09126e5ca48be3b GIT binary patch literal 19801 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 BryKwP literal 0 HcmV?d00001 From d475c98986b66c613a09ea1ee9adce7da8524573 Mon Sep 17 00:00:00 2001 From: drishyashrestha Date: Mon, 16 Jun 2025 16:27:49 -0400 Subject: [PATCH 5/6] updated model --- week4/model.RData | Bin 19801 -> 26187 bytes week4/predict_citibikes.rmd | 8 +++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/week4/model.RData b/week4/model.RData index 179337e5e1432effe00eeef3a09126e5ca48be3b..d62e16830026ff8885ba4cdab7332561910ae4d0 100644 GIT binary patch literal 26187 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 JX&DFS{{R+Q(%t|7 literal 19801 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 BryKwP diff --git a/week4/predict_citibikes.rmd b/week4/predict_citibikes.rmd index 248109862..88134f111 100644 --- a/week4/predict_citibikes.rmd +++ b/week4/predict_citibikes.rmd @@ -148,7 +148,7 @@ for (f in 1:num_folds) { train_data <- filter(trips_per_day, fold != f) validate_data <- filter(trips_per_day, fold == f) # Fit model with selected features - summary(model <- lm(num_trips ~ prcp_high + avg_temp + day_type + season*prcp, data = train_data)) + model <- lm(num_trips ~ prcp_high + avg_temp + day_type + season*prcp, data = train_data) # RMSE on training data train_pred <- predict(model, train_data) train_err[f] <- sqrt(mean((train_pred - train_data$num_trips)^2)) @@ -210,4 +210,10 @@ This scatter plot shows the relationship between the actual number of trips and save(model, file = "model.RData") +tmp_env <- new.env() +load("model.RData", envir = tmp_env) +ls(tmp_env) # Lists all objects saved in the file + +print(tmp_env$model) + ``` \ No newline at end of file From 06f5f032caff0b7c40044a8340cfa245deace47e Mon Sep 17 00:00:00 2001 From: drishyashrestha Date: Tue, 17 Jun 2025 14:08:16 -0400 Subject: [PATCH 6/6] final --- week4/test_citbike_predictions.Rmd | 77 ++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/week4/test_citbike_predictions.Rmd b/week4/test_citbike_predictions.Rmd index e69de29bb..efde59cf7 100644 --- a/week4/test_citbike_predictions.Rmd +++ b/week4/test_citbike_predictions.Rmd @@ -0,0 +1,77 @@ +--- +title: "Test Citibike Prediction" +author: "Drishya Shrestha" +date: "`r Sys.Date()`" +output: html_document +--- + + + +## Setup (loading packages and data) + + +```{r setup} +library(tidyverse) +library(scales) +library(modelr) +library(readr) +theme_set(theme_bw()) +``` + + + +## Loading data + + +```{r pressure, echo=FALSE} +trips_per_day_2015 <- read_tsv("trips_per_day_2015.tsv") +weather_2015 <- read_csv("weather_2015.csv") +summary(weather_2015) +str(weather_2015) +summary(trips_per_day_2015) +str(trips_per_day_2015) + +tmp_env <- new.env() +load("model.RData", envir = tmp_env) +model <- tmp_env$model +summary(model) +formula(model) + + + +str(trips_per_day_2015) +head(trips_per_day_2015) +head(weather_2015) +joined_df <- inner_join(weather_2015, trips_per_day_2015, by = c("DATE" = "ymd")) +head(joined_df) +names(joined_df) <- tolower(names(joined_df)) + +joined_df<-mutate(joined_df, day_name = weekdays(date), snow_high = ifelse(snwd>5, 1,0),avg_temp = (tmin/10 + tmax/10) / 2, prcp_high = ifelse(prcp > 0.15, 1, 0), + month = month(date), + season = case_when( + month %in% c(12, 1, 2) ~ "Winter", + month %in% c(3, 4, 5) ~ "Spring", + month %in% c(6, 7, 8) ~ "Summer", + month %in% c(9, 10, 11) ~ "Fall" + ) +) +joined_df<-mutate(joined_df, day_type = ifelse(day_name %in% c("Saturday", "Sunday"), 1, 0)) %>% select(- c(day_name,tavg)) +str(joined_df) +view(joined_df) +##Testing it +actual <- joined_df$num_trips +predicted <- predict(model, newdata = joined_df) + +rmse <- sqrt(mean((actual - predicted)^2)) +rmse + +#Checking and debugging the new data + + +colSums(is.na(joined_df)) + +#Features used check +attr(model$terms, "term.labels") +# Check types +str(joined_df) +```