# Purpose of this exercise is to investigate apply functions
# in R
# 
# Background:
# You are working on a project for a meteorology bureau. You have
# been supplied weather data for 4 cities in the US: Chicago,
# New York, Houston and San Francisco.
# 
# You are required to deliver the following outputs:
#   
# 1. A table showing the annual averages of each observed metric
# for every city.
# 2. A table showing by how much temperature fluctuates each month
# from min to max (in %). Take min temp as the base.
# 3. A table showing the annual maximums of each observed metric
# for every city.
# 4. A table showing the annual minimums of each observed metric
# for every city.
# 5. A table showing which months the annual maximums of each 
# metric were observed in every city.

#set working directory
setwd("C:/Users/Hai/Downloads/P3-Weather-Data/Weather Data/")

#import data with first column assigned to row names
CHI <- read.csv("Chicago-F.csv", row.names = 1)
NY <- read.csv("NewYork-F.csv", row.names = 1)
HOU <- read.csv("Houston-F.csv", row.names = 1)
SF <- read.csv("SanFrancisco-F.csv", row.names = 1)

#show data
CHI
##                    Jan    Feb    Mar    Apr    May    Jun    Jul    Aug    Sep
## AvgHigh_F        32.00  36.00  46.00  59.00  70.00  81.00  84.00  82.00  75.00
## AvgLow_F         18.00  21.00  30.00  41.00  52.00  63.00  68.00  66.00  57.00
## AvgPrecip_inch    2.05   1.93   2.72   3.62   4.13   4.06   4.02   3.98   3.31
## DaysWithPrecip   10.00   8.00  11.00  11.00  11.00  10.00   9.00   9.00   8.00
## HoursOfSunshine 135.00 136.00 187.00 215.00 281.00 311.00 318.00 283.00 226.00
##                    Oct    Nov    Dec
## AvgHigh_F        63.00  48.00  36.00
## AvgLow_F         46.00  34.00  23.00
## AvgPrecip_inch    3.23   3.43   2.56
## DaysWithPrecip   10.00  11.00  11.00
## HoursOfSunshine 193.00 113.00 106.00
NY
##                   Jan    Feb    Mar    Apr    May   Jun    Jul    Aug    Sep
## AvgHigh_F        39.0  42.00  50.00  60.00  71.00  79.0  85.00  83.00  76.00
## AvgLow_F         26.0  29.00  35.00  44.00  55.00  64.0  70.00  69.00  61.00
## AvgPrecip_inch    3.9   2.95   4.06   3.94   4.45   3.5   4.53   4.13   3.98
## DaysWithPrecip   11.0  10.00  12.00  11.00  11.00  10.0  11.00  10.00   8.00
## HoursOfSunshine 154.0 171.00 213.00 237.00 268.00 289.0 302.00 271.00 235.00
##                    Oct    Nov    Dec
## AvgHigh_F        65.00  54.00  44.00
## AvgLow_F         50.00  41.00  32.00
## AvgPrecip_inch    3.39   3.82   3.58
## DaysWithPrecip    8.00   9.00  10.00
## HoursOfSunshine 213.00 169.00 155.00
HOU
##                    Jan    Feb    Mar    Apr    May    Jun    Jul    Aug    Sep
## AvgHigh_F        63.00  66.00  73.00  80.00  86.00  91.00  94.00  94.00  90.00
## AvgLow_F         43.00  47.00  53.00  59.00  68.00  74.00  75.00  75.00  70.00
## AvgPrecip_inch    3.35   3.19   3.39   3.31   5.08   5.91   3.78   3.74   4.09
## DaysWithPrecip    9.00   9.00   8.00   6.00   8.00  10.00   9.00   8.00   8.00
## HoursOfSunshine 142.00 155.00 192.00 210.00 248.00 282.00 294.00 269.00 237.00
##                    Oct    Nov    Dec
## AvgHigh_F        82.00  73.00  64.00
## AvgLow_F         61.00  52.00  45.00
## AvgPrecip_inch    5.67   4.33   3.74
## DaysWithPrecip    7.00   8.00   9.00
## HoursOfSunshine 229.00 168.00 148.00
SF
##                    Jan    Feb    Mar    Apr    May    Jun Jul    Aug   Sep
## AvgHigh_F        57.00  60.00  62.00  63.00  64.00  66.00  67  68.00  70.0
## AvgLow_F         46.00  47.00  49.00  49.00  51.00  53.00  54  55.00  55.0
## AvgPrecip_inch    4.49   4.45   3.27   1.46   0.71   0.16   0   0.08   0.2
## DaysWithPrecip   11.00  11.00  10.00   6.00   4.00   2.00   1   1.00   1.0
## HoursOfSunshine 165.00 182.00 251.00 281.00 314.00 330.00 300 272.00 267.0
##                   Oct    Nov    Dec
## AvgHigh_F        69.0  63.00  57.00
## AvgLow_F         54.0  50.00  46.00
## AvgPrecip_inch    1.1   3.15   4.57
## DaysWithPrecip    4.0   7.00  10.00
## HoursOfSunshine 243.0 189.00 156.00
#convert to matrices
CHI <- as.matrix(CHI)
NY <- as.matrix(NY)
HOU <- as.matrix(HOU)
SF <- as.matrix(SF)

#check if conversion was successful
is.matrix(CHI)
## [1] TRUE
#create list of matrices
Weather <-list(CHI=CHI, NY=NY, HOU=HOU, SF=SF)

#show list
Weather
## $CHI
##                    Jan    Feb    Mar    Apr    May    Jun    Jul    Aug    Sep
## AvgHigh_F        32.00  36.00  46.00  59.00  70.00  81.00  84.00  82.00  75.00
## AvgLow_F         18.00  21.00  30.00  41.00  52.00  63.00  68.00  66.00  57.00
## AvgPrecip_inch    2.05   1.93   2.72   3.62   4.13   4.06   4.02   3.98   3.31
## DaysWithPrecip   10.00   8.00  11.00  11.00  11.00  10.00   9.00   9.00   8.00
## HoursOfSunshine 135.00 136.00 187.00 215.00 281.00 311.00 318.00 283.00 226.00
##                    Oct    Nov    Dec
## AvgHigh_F        63.00  48.00  36.00
## AvgLow_F         46.00  34.00  23.00
## AvgPrecip_inch    3.23   3.43   2.56
## DaysWithPrecip   10.00  11.00  11.00
## HoursOfSunshine 193.00 113.00 106.00
## 
## $NY
##                   Jan    Feb    Mar    Apr    May   Jun    Jul    Aug    Sep
## AvgHigh_F        39.0  42.00  50.00  60.00  71.00  79.0  85.00  83.00  76.00
## AvgLow_F         26.0  29.00  35.00  44.00  55.00  64.0  70.00  69.00  61.00
## AvgPrecip_inch    3.9   2.95   4.06   3.94   4.45   3.5   4.53   4.13   3.98
## DaysWithPrecip   11.0  10.00  12.00  11.00  11.00  10.0  11.00  10.00   8.00
## HoursOfSunshine 154.0 171.00 213.00 237.00 268.00 289.0 302.00 271.00 235.00
##                    Oct    Nov    Dec
## AvgHigh_F        65.00  54.00  44.00
## AvgLow_F         50.00  41.00  32.00
## AvgPrecip_inch    3.39   3.82   3.58
## DaysWithPrecip    8.00   9.00  10.00
## HoursOfSunshine 213.00 169.00 155.00
## 
## $HOU
##                    Jan    Feb    Mar    Apr    May    Jun    Jul    Aug    Sep
## AvgHigh_F        63.00  66.00  73.00  80.00  86.00  91.00  94.00  94.00  90.00
## AvgLow_F         43.00  47.00  53.00  59.00  68.00  74.00  75.00  75.00  70.00
## AvgPrecip_inch    3.35   3.19   3.39   3.31   5.08   5.91   3.78   3.74   4.09
## DaysWithPrecip    9.00   9.00   8.00   6.00   8.00  10.00   9.00   8.00   8.00
## HoursOfSunshine 142.00 155.00 192.00 210.00 248.00 282.00 294.00 269.00 237.00
##                    Oct    Nov    Dec
## AvgHigh_F        82.00  73.00  64.00
## AvgLow_F         61.00  52.00  45.00
## AvgPrecip_inch    5.67   4.33   3.74
## DaysWithPrecip    7.00   8.00   9.00
## HoursOfSunshine 229.00 168.00 148.00
## 
## $SF
##                    Jan    Feb    Mar    Apr    May    Jun Jul    Aug   Sep
## AvgHigh_F        57.00  60.00  62.00  63.00  64.00  66.00  67  68.00  70.0
## AvgLow_F         46.00  47.00  49.00  49.00  51.00  53.00  54  55.00  55.0
## AvgPrecip_inch    4.49   4.45   3.27   1.46   0.71   0.16   0   0.08   0.2
## DaysWithPrecip   11.00  11.00  10.00   6.00   4.00   2.00   1   1.00   1.0
## HoursOfSunshine 165.00 182.00 251.00 281.00 314.00 330.00 300 272.00 267.0
##                   Oct    Nov    Dec
## AvgHigh_F        69.0  63.00  57.00
## AvgLow_F         54.0  50.00  46.00
## AvgPrecip_inch    1.1   3.15   4.57
## DaysWithPrecip    4.0   7.00  10.00
## HoursOfSunshine 243.0 189.00 156.00
#apply mean to each matrix and calculate mean on the row
apply(CHI,1,mean)
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##       59.333333       43.250000        3.253333        9.916667      208.666667
apply(NY,1,mean)
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##        62.33333        48.00000         3.85250        10.08333       223.08333
apply(HOU,1,mean)
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##       79.666667       60.166667        4.131667        8.250000      214.500000
apply(SF,1,mean)
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##       63.833333       50.750000        1.970000        5.666667      245.833333
#side note: how to recreate apply function using loops 

#create empty vector
output <- NULL

#loop through each row and calculate mean then store in output vector
for (i in 1:5){
  output[i] <- mean(SF[i,])
}

#show output vector
output
## [1]  63.833333  50.750000   1.970000   5.666667 245.833333
#assign names from CHI matrix
names(output) <- rownames(SF)

#show output vector -- same as apply(CHI,1,mean)
output
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##       63.833333       50.750000        1.970000        5.666667      245.833333
#apply transpose function to entire list and return list
lapply(Weather, t)
## $CHI
##     AvgHigh_F AvgLow_F AvgPrecip_inch DaysWithPrecip HoursOfSunshine
## Jan        32       18           2.05             10             135
## Feb        36       21           1.93              8             136
## Mar        46       30           2.72             11             187
## Apr        59       41           3.62             11             215
## May        70       52           4.13             11             281
## Jun        81       63           4.06             10             311
## Jul        84       68           4.02              9             318
## Aug        82       66           3.98              9             283
## Sep        75       57           3.31              8             226
## Oct        63       46           3.23             10             193
## Nov        48       34           3.43             11             113
## Dec        36       23           2.56             11             106
## 
## $NY
##     AvgHigh_F AvgLow_F AvgPrecip_inch DaysWithPrecip HoursOfSunshine
## Jan        39       26           3.90             11             154
## Feb        42       29           2.95             10             171
## Mar        50       35           4.06             12             213
## Apr        60       44           3.94             11             237
## May        71       55           4.45             11             268
## Jun        79       64           3.50             10             289
## Jul        85       70           4.53             11             302
## Aug        83       69           4.13             10             271
## Sep        76       61           3.98              8             235
## Oct        65       50           3.39              8             213
## Nov        54       41           3.82              9             169
## Dec        44       32           3.58             10             155
## 
## $HOU
##     AvgHigh_F AvgLow_F AvgPrecip_inch DaysWithPrecip HoursOfSunshine
## Jan        63       43           3.35              9             142
## Feb        66       47           3.19              9             155
## Mar        73       53           3.39              8             192
## Apr        80       59           3.31              6             210
## May        86       68           5.08              8             248
## Jun        91       74           5.91             10             282
## Jul        94       75           3.78              9             294
## Aug        94       75           3.74              8             269
## Sep        90       70           4.09              8             237
## Oct        82       61           5.67              7             229
## Nov        73       52           4.33              8             168
## Dec        64       45           3.74              9             148
## 
## $SF
##     AvgHigh_F AvgLow_F AvgPrecip_inch DaysWithPrecip HoursOfSunshine
## Jan        57       46           4.49             11             165
## Feb        60       47           4.45             11             182
## Mar        62       49           3.27             10             251
## Apr        63       49           1.46              6             281
## May        64       51           0.71              4             314
## Jun        66       53           0.16              2             330
## Jul        67       54           0.00              1             300
## Aug        68       55           0.08              1             272
## Sep        70       55           0.20              1             267
## Oct        69       54           1.10              4             243
## Nov        63       50           3.15              7             189
## Dec        57       46           4.57             10             156
#show list
Weather
## $CHI
##                    Jan    Feb    Mar    Apr    May    Jun    Jul    Aug    Sep
## AvgHigh_F        32.00  36.00  46.00  59.00  70.00  81.00  84.00  82.00  75.00
## AvgLow_F         18.00  21.00  30.00  41.00  52.00  63.00  68.00  66.00  57.00
## AvgPrecip_inch    2.05   1.93   2.72   3.62   4.13   4.06   4.02   3.98   3.31
## DaysWithPrecip   10.00   8.00  11.00  11.00  11.00  10.00   9.00   9.00   8.00
## HoursOfSunshine 135.00 136.00 187.00 215.00 281.00 311.00 318.00 283.00 226.00
##                    Oct    Nov    Dec
## AvgHigh_F        63.00  48.00  36.00
## AvgLow_F         46.00  34.00  23.00
## AvgPrecip_inch    3.23   3.43   2.56
## DaysWithPrecip   10.00  11.00  11.00
## HoursOfSunshine 193.00 113.00 106.00
## 
## $NY
##                   Jan    Feb    Mar    Apr    May   Jun    Jul    Aug    Sep
## AvgHigh_F        39.0  42.00  50.00  60.00  71.00  79.0  85.00  83.00  76.00
## AvgLow_F         26.0  29.00  35.00  44.00  55.00  64.0  70.00  69.00  61.00
## AvgPrecip_inch    3.9   2.95   4.06   3.94   4.45   3.5   4.53   4.13   3.98
## DaysWithPrecip   11.0  10.00  12.00  11.00  11.00  10.0  11.00  10.00   8.00
## HoursOfSunshine 154.0 171.00 213.00 237.00 268.00 289.0 302.00 271.00 235.00
##                    Oct    Nov    Dec
## AvgHigh_F        65.00  54.00  44.00
## AvgLow_F         50.00  41.00  32.00
## AvgPrecip_inch    3.39   3.82   3.58
## DaysWithPrecip    8.00   9.00  10.00
## HoursOfSunshine 213.00 169.00 155.00
## 
## $HOU
##                    Jan    Feb    Mar    Apr    May    Jun    Jul    Aug    Sep
## AvgHigh_F        63.00  66.00  73.00  80.00  86.00  91.00  94.00  94.00  90.00
## AvgLow_F         43.00  47.00  53.00  59.00  68.00  74.00  75.00  75.00  70.00
## AvgPrecip_inch    3.35   3.19   3.39   3.31   5.08   5.91   3.78   3.74   4.09
## DaysWithPrecip    9.00   9.00   8.00   6.00   8.00  10.00   9.00   8.00   8.00
## HoursOfSunshine 142.00 155.00 192.00 210.00 248.00 282.00 294.00 269.00 237.00
##                    Oct    Nov    Dec
## AvgHigh_F        82.00  73.00  64.00
## AvgLow_F         61.00  52.00  45.00
## AvgPrecip_inch    5.67   4.33   3.74
## DaysWithPrecip    7.00   8.00   9.00
## HoursOfSunshine 229.00 168.00 148.00
## 
## $SF
##                    Jan    Feb    Mar    Apr    May    Jun Jul    Aug   Sep
## AvgHigh_F        57.00  60.00  62.00  63.00  64.00  66.00  67  68.00  70.0
## AvgLow_F         46.00  47.00  49.00  49.00  51.00  53.00  54  55.00  55.0
## AvgPrecip_inch    4.49   4.45   3.27   1.46   0.71   0.16   0   0.08   0.2
## DaysWithPrecip   11.00  11.00  10.00   6.00   4.00   2.00   1   1.00   1.0
## HoursOfSunshine 165.00 182.00 251.00 281.00 314.00 330.00 300 272.00 267.0
##                   Oct    Nov    Dec
## AvgHigh_F        69.0  63.00  57.00
## AvgLow_F         54.0  50.00  46.00
## AvgPrecip_inch    1.1   3.15   4.57
## DaysWithPrecip    4.0   7.00  10.00
## HoursOfSunshine 243.0 189.00 156.00
#return value in each matrix located at 1,1
lapply(Weather,"[",1,1)
## $CHI
## [1] 32
## 
## $NY
## [1] 39
## 
## $HOU
## [1] 63
## 
## $SF
## [1] 57
#show list
Weather
## $CHI
##                    Jan    Feb    Mar    Apr    May    Jun    Jul    Aug    Sep
## AvgHigh_F        32.00  36.00  46.00  59.00  70.00  81.00  84.00  82.00  75.00
## AvgLow_F         18.00  21.00  30.00  41.00  52.00  63.00  68.00  66.00  57.00
## AvgPrecip_inch    2.05   1.93   2.72   3.62   4.13   4.06   4.02   3.98   3.31
## DaysWithPrecip   10.00   8.00  11.00  11.00  11.00  10.00   9.00   9.00   8.00
## HoursOfSunshine 135.00 136.00 187.00 215.00 281.00 311.00 318.00 283.00 226.00
##                    Oct    Nov    Dec
## AvgHigh_F        63.00  48.00  36.00
## AvgLow_F         46.00  34.00  23.00
## AvgPrecip_inch    3.23   3.43   2.56
## DaysWithPrecip   10.00  11.00  11.00
## HoursOfSunshine 193.00 113.00 106.00
## 
## $NY
##                   Jan    Feb    Mar    Apr    May   Jun    Jul    Aug    Sep
## AvgHigh_F        39.0  42.00  50.00  60.00  71.00  79.0  85.00  83.00  76.00
## AvgLow_F         26.0  29.00  35.00  44.00  55.00  64.0  70.00  69.00  61.00
## AvgPrecip_inch    3.9   2.95   4.06   3.94   4.45   3.5   4.53   4.13   3.98
## DaysWithPrecip   11.0  10.00  12.00  11.00  11.00  10.0  11.00  10.00   8.00
## HoursOfSunshine 154.0 171.00 213.00 237.00 268.00 289.0 302.00 271.00 235.00
##                    Oct    Nov    Dec
## AvgHigh_F        65.00  54.00  44.00
## AvgLow_F         50.00  41.00  32.00
## AvgPrecip_inch    3.39   3.82   3.58
## DaysWithPrecip    8.00   9.00  10.00
## HoursOfSunshine 213.00 169.00 155.00
## 
## $HOU
##                    Jan    Feb    Mar    Apr    May    Jun    Jul    Aug    Sep
## AvgHigh_F        63.00  66.00  73.00  80.00  86.00  91.00  94.00  94.00  90.00
## AvgLow_F         43.00  47.00  53.00  59.00  68.00  74.00  75.00  75.00  70.00
## AvgPrecip_inch    3.35   3.19   3.39   3.31   5.08   5.91   3.78   3.74   4.09
## DaysWithPrecip    9.00   9.00   8.00   6.00   8.00  10.00   9.00   8.00   8.00
## HoursOfSunshine 142.00 155.00 192.00 210.00 248.00 282.00 294.00 269.00 237.00
##                    Oct    Nov    Dec
## AvgHigh_F        82.00  73.00  64.00
## AvgLow_F         61.00  52.00  45.00
## AvgPrecip_inch    5.67   4.33   3.74
## DaysWithPrecip    7.00   8.00   9.00
## HoursOfSunshine 229.00 168.00 148.00
## 
## $SF
##                    Jan    Feb    Mar    Apr    May    Jun Jul    Aug   Sep
## AvgHigh_F        57.00  60.00  62.00  63.00  64.00  66.00  67  68.00  70.0
## AvgLow_F         46.00  47.00  49.00  49.00  51.00  53.00  54  55.00  55.0
## AvgPrecip_inch    4.49   4.45   3.27   1.46   0.71   0.16   0   0.08   0.2
## DaysWithPrecip   11.00  11.00  10.00   6.00   4.00   2.00   1   1.00   1.0
## HoursOfSunshine 165.00 182.00 251.00 281.00 314.00 330.00 300 272.00 267.0
##                   Oct    Nov    Dec
## AvgHigh_F        69.0  63.00  57.00
## AvgLow_F         54.0  50.00  46.00
## AvgPrecip_inch    1.1   3.15   4.57
## DaysWithPrecip    4.0   7.00  10.00
## HoursOfSunshine 243.0 189.00 156.00
#use lapply to calculate difference % between min and max temp for each city
lapply(Weather, function(x) round((x[1,]-x[2,])/x[2,],2))
## $CHI
##  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec 
## 0.78 0.71 0.53 0.44 0.35 0.29 0.24 0.24 0.32 0.37 0.41 0.57 
## 
## $NY
##  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec 
## 0.50 0.45 0.43 0.36 0.29 0.23 0.21 0.20 0.25 0.30 0.32 0.38 
## 
## $HOU
##  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec 
## 0.47 0.40 0.38 0.36 0.26 0.23 0.25 0.25 0.29 0.34 0.40 0.42 
## 
## $SF
##  Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec 
## 0.24 0.28 0.27 0.29 0.25 0.25 0.24 0.24 0.27 0.28 0.26 0.24
#return max of each row
apply(CHI,1,max)
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           84.00           68.00            4.13           11.00          318.00
#return max of each row of each matrix
lapply(Weather, apply, 1, max)
## $CHI
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           84.00           68.00            4.13           11.00          318.00 
## 
## $NY
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           85.00           70.00            4.53           12.00          302.00 
## 
## $HOU
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           94.00           75.00            5.91           10.00          294.00 
## 
## $SF
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           70.00           55.00            4.57           11.00          330.00
#same as
lapply(Weather, function(x) apply(x,1,max))
## $CHI
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           84.00           68.00            4.13           11.00          318.00 
## 
## $NY
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           85.00           70.00            4.53           12.00          302.00 
## 
## $HOU
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           94.00           75.00            5.91           10.00          294.00 
## 
## $SF
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           70.00           55.00            4.57           11.00          330.00
#return max value in first row of CHI
which.max(CHI[1,])
## Jul 
##   7
#return name of max value in first row of CHI
names(which.max(CHI[1,]))
## [1] "Jul"
#use apply on CHI matrix
apply(CHI,1,function(x) names(which.max(x)))
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           "Jul"           "Jul"           "May"           "Mar"           "Jul"
#use lapply on list Weather
lapply(Weather, function(y) apply(y,1,function(x) names(which.max(x))))
## $CHI
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           "Jul"           "Jul"           "May"           "Mar"           "Jul" 
## 
## $NY
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           "Jul"           "Jul"           "Jul"           "Mar"           "Jul" 
## 
## $HOU
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           "Jul"           "Jul"           "Jun"           "Jun"           "Jul" 
## 
## $SF
##       AvgHigh_F        AvgLow_F  AvgPrecip_inch  DaysWithPrecip HoursOfSunshine 
##           "Sep"           "Aug"           "Dec"           "Jan"           "Jun"
#Deliverable 1:
round(sapply(Weather,rowMeans),2)
##                    CHI     NY    HOU     SF
## AvgHigh_F        59.33  62.33  79.67  63.83
## AvgLow_F         43.25  48.00  60.17  50.75
## AvgPrecip_inch    3.25   3.85   4.13   1.97
## DaysWithPrecip    9.92  10.08   8.25   5.67
## HoursOfSunshine 208.67 223.08 214.50 245.83
#Deliverable 2:
sapply(Weather, function(x) round((x[1,]-x[2,])/x[2,],2))
##      CHI   NY  HOU   SF
## Jan 0.78 0.50 0.47 0.24
## Feb 0.71 0.45 0.40 0.28
## Mar 0.53 0.43 0.38 0.27
## Apr 0.44 0.36 0.36 0.29
## May 0.35 0.29 0.26 0.25
## Jun 0.29 0.23 0.23 0.25
## Jul 0.24 0.21 0.25 0.24
## Aug 0.24 0.20 0.25 0.24
## Sep 0.32 0.25 0.29 0.27
## Oct 0.37 0.30 0.34 0.28
## Nov 0.41 0.32 0.40 0.26
## Dec 0.57 0.38 0.42 0.24
#Deliverable 3:
sapply(Weather, apply, 1, max)
##                    CHI     NY    HOU     SF
## AvgHigh_F        84.00  85.00  94.00  70.00
## AvgLow_F         68.00  70.00  75.00  55.00
## AvgPrecip_inch    4.13   4.53   5.91   4.57
## DaysWithPrecip   11.00  12.00  10.00  11.00
## HoursOfSunshine 318.00 302.00 294.00 330.00
#Deliverable 4:
sapply(Weather, apply, 1, min)
##                    CHI     NY    HOU  SF
## AvgHigh_F        32.00  39.00  63.00  57
## AvgLow_F         18.00  26.00  43.00  46
## AvgPrecip_inch    1.93   2.95   3.19   0
## DaysWithPrecip    8.00   8.00   6.00   1
## HoursOfSunshine 106.00 154.00 142.00 156
#Deliverable 5:
sapply(Weather, function(y) apply(y,1,function(x) names(which.max(x))))
##                 CHI   NY    HOU   SF   
## AvgHigh_F       "Jul" "Jul" "Jul" "Sep"
## AvgLow_F        "Jul" "Jul" "Jul" "Aug"
## AvgPrecip_inch  "May" "Jul" "Jun" "Dec"
## DaysWithPrecip  "Mar" "Mar" "Jun" "Jan"
## HoursOfSunshine "Jul" "Jul" "Jul" "Jun"