Module11 (6/1/2026)

Author

Ethan Schatz

This module explores the package data.table in R.


Project

Load the Data

library(data.table)

Attaching package: 'data.table'
The following object is masked from 'package:base':

    %notin%
library(ggplot2)
temp <- fread("E:/Summer 2026/data/Temperature.csv")
str(temp)
Classes 'data.table' and 'data.frame':  8528 obs. of  16 variables:
 $ Sample     : chr  "DANT.19900110" "DANT.19900206" "DANT.19900308" "DANT.19900404" ...
 $ Date       : int  19900110 19900206 19900308 19900404 19900509 19900620 19900718 19900815 19900919 19901017 ...
 $ DateNr     : chr  "10/1/90" "6/2/90" "8/3/90" "4/4/90" ...
 $ dDay1      : int  7 34 64 91 126 168 196 224 259 287 ...
 $ dDay2      : int  9 36 66 93 128 170 198 226 261 289 ...
 $ dDay3      : int  9 36 66 93 128 170 198 226 261 289 ...
 $ Station    : chr  "DANT" "DANT" "DANT" "DANT" ...
 $ Area       : chr  "WZ" "WZ" "WZ" "WZ" ...
 $ 31UE_ED50  : num  681380 681380 681380 681380 681380 ...
 $ 31UN_ED50  : num  5920571 5920571 5920571 5920571 5920571 ...
 $ Year       : int  1990 1990 1990 1990 1990 1990 1990 1990 1990 1990 ...
 $ Month      : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Season     : chr  "winter" "winter" "spring" "spring" ...
 $ Salinity   : num  29.2 27.4 25 28.8 33.3 ...
 $ Temperature: num  4 6 7.3 8.2 17.4 18.1 17 21 15.1 13.8 ...
 $ CHLFa      : num  1.3 NA 21.1 25 10.2 6.2 7.9 7.85 13 11.8 ...
 - attr(*, ".internal.selfref")=<pointer: 0x000001cfd914cf30> 

Extract Winter Observations

win <- temp[Season == "winter"]
win
             Sample     Date    DateNr dDay1 dDay2 dDay3 Station   Area
             <char>    <int>    <char> <int> <int> <int>  <char> <char>
   1: DANT.19900110 19900110   10/1/90     7     9     9    DANT     WZ
   2: DANT.19900206 19900206    6/2/90    34    36    36    DANT     WZ
   3: DANT.19901212 19901212  12/12/90   343   345   345    DANT     WZ
   4: DANT.19910116 19910116 1/16/1991   378   380    15    DANT     WZ
   5: DANT.19910226 19910226 2/26/1991   419   421    56    DANT     WZ
  ---                                                                  
1702: ZUID.20040216 20040216 2/16/2004  5157  5159    46    ZUID     WZ
1703: ZUID.20041208 20041208   8/12/04  5453  5455   342    ZUID     WZ
1704: ZUID.20050119 20050119 1/19/2005  5495  5497    18    ZUID     WZ
1705: ZUID.20050218 20050218 2/18/2005  5525  5527    48    ZUID     WZ
1706: ZUID.20051212 20051212  12/12/05  5822  5824   345    ZUID     WZ
      31UE_ED50 31UN_ED50  Year Month Season Salinity Temperature CHLFa
          <num>     <num> <int> <int> <char>    <num>       <num> <num>
   1:  681379.6   5920571  1990     1 winter    29.19        4.00  1.30
   2:  681379.6   5920571  1990     2 winter    27.37        6.00    NA
   3:  681379.6   5920571  1990    12 winter    31.50        4.20 60.50
   4:  681379.6   5920571  1991     1 winter    20.83       -0.30  2.30
   5:  681379.6   5920571  1991     2 winter    28.06        3.90  3.52
  ---                                                                  
1702:  733386.3   5928197  2004     2 winter    24.70        4.40    NA
1703:  733386.3   5928197  2004    12 winter    28.67        4.72  1.52
1704:  733386.3   5928197  2005     1 winter    28.39        3.57  4.12
1705:  733386.3   5928197  2005     2 winter    29.31        1.31  6.56
1706:  733386.3   5928197  2005    12 winter    29.08        5.13  2.38

Extract Winter Observations for Zone NC

winNC <- temp[Season == "winter" & Area == "NC"]
winNC
            Sample     Date     DateNr dDay1 dDay2 dDay3 Station   Area
            <char>    <int>     <char> <int> <int> <int>  <char> <char>
  1: T100.19900103 19900103     3/1/90     0     2     2    T100     NC
  2: T100.19900205 19900205     5/2/90    33    35    35    T100     NC
  3: T100.19901218 19901218 12/18/1990   349   351   351    T100     NC
  4: T100.19910116 19910116  1/16/1991   378   380    15    T100     NC
  5: T100.19910205 19910205     5/2/91   398   400    35    T100     NC
 ---                                                                   
177: T235.20040209 20040209     9/2/04  5150  5152    39    T235     NC
178: T235.20041214 20041214 12/14/2004  5459  5461   348    T235     NC
179: T235.20050126 20050126  1/26/2005  5502  5504    25    T235     NC
180: T235.20050214 20050214  2/14/2005  5521  5523    44    T235     NC
181: T235.20051220 20051220 12/20/2005  5830  5832   353    T235     NC
     31UE_ED50 31UN_ED50  Year Month Season Salinity Temperature CHLFa
         <num>     <num> <int> <int> <char>    <num>       <num> <num>
  1:  587650.2   6001110  1990     1 winter    34.82        8.50  0.30
  2:  587650.2   6001110  1990     2 winter       NA          NA    NA
  3:  587650.2   6001110  1990    12 winter    34.80        9.20  0.40
  4:  587650.2   6001110  1991     1 winter    34.86        6.10  0.68
  5:  587650.2   6001110  1991     2 winter    34.53        5.20  0.34
 ---                                                                  
177:  510032.3   6114101  2004     2 winter       NA          NA    NA
178:  510032.3   6114101  2004    12 winter    34.96        8.47  0.62
179:  510032.3   6114101  2005     1 winter    35.09        6.44  0.62
180:  510032.3   6114101  2005     2 winter       NA          NA    NA
181:  510032.3   6114101  2005    12 winter    33.87        8.19  1.12

Select Area, Season, and Temperautre Columns

AST <- temp[, .(Area, Season, Temperature)]
AST
        Area Season Temperature
      <char> <char>       <num>
   1:     WZ winter        4.00
   2:     WZ winter        6.00
   3:     WZ spring        7.30
   4:     WZ spring        8.20
   5:     WZ spring       17.40
  ---                          
8524:     WZ autumn       15.47
8525:     WZ autumn       13.45
8526:     WZ autumn       12.09
8527:     WZ autumn        9.03
8528:     WZ winter        5.13

Select Area, and Temperautre Columns for Winter Observations

WAT <- temp[Season == "winter", .(Area, Season, Temperature)]
WAT
        Area Season Temperature
      <char> <char>       <num>
   1:     WZ winter        4.00
   2:     WZ winter        6.00
   3:     WZ winter        4.20
   4:     WZ winter       -0.30
   5:     WZ winter        3.90
  ---                          
1702:     WZ winter        4.40
1703:     WZ winter        4.72
1704:     WZ winter        3.57
1705:     WZ winter        1.31
1706:     WZ winter        5.13

Find Total Observations in Winter

temp[Season == "winter", .N]
[1] 1706

Find Mean Temperature and Salinity in Winter

mTeSl <- temp[Season == "winter",
              .(m_Temp = mean(Temperature, na.rm = TRUE), m_Sal = mean(Salinity, na.rm = TRUE)) ]
mTeSl
    m_Temp    m_Sal
     <num>    <num>
1: 5.57162 29.15756

Find Total Observations per Station in Winter

stObWn <- temp[Season == "winter", .N, by = Station]
stObWn
    Station     N
     <char> <int>
 1:    DANT    50
 2:    DREI    52
 3:      G6   101
 4:    GROO    50
 5:    HAMM    55
 6:    HANS    56
 7:    HUIB    50
 8:    LODS    54
 9:    MARS    49
10:     N02   115
11:     N10   131
12:     N20    50
13:     N70    50
14:     R03    32
15:    SOEL    50
16:    T004    97
17:    T010    45
18:    T100    45
19:    T135    46
20:    T175    45
21:    T235    45
22:    VLIS    84
23:     W02    99
24:     W20    47
25:     W70    47
26:    WISS    55
27:    ZIJP    54
28:    ZUID    52
    Station     N
     <char> <int>

Find Total Observations per Station Per Season

stObSe <- temp[, .N, by = .(Station, Season)]
stObSe
     Station Season     N
      <char> <char> <int>
  1:    DANT winter    50
  2:    DANT spring    89
  3:    DANT summer    89
  4:    DANT autumn    72
  5:    DREI winter    52
 ---                     
114:    ZIJP autumn    61
115:    ZUID winter    52
116:    ZUID spring    89
117:    ZUID summer    89
118:    ZUID autumn    73

Estimate Total Average Temperatures by Month

avTemp <- temp[, .(m_Temp = mean(Temperature, na.rm = TRUE)), by = Month]
avTemp
    Month    m_Temp
    <int>     <num>
 1:     1  5.174210
 2:     2  4.737400
 3:     3  6.125961
 4:     4  8.702035
 5:     5 12.293479
 6:     6 15.659933
 7:     7 18.077343
 8:     8 19.388355
 9:     9 16.995974
10:    10 13.619670
11:    11  9.848891
12:    12  6.746339

Estimate Total Average Temperatures by Month by Area

avTempA <- temp[, .(m_Temp = mean(Temperature, na.rm = TRUE)), by = .(Month, Area)]
avTempA
     Month   Area    m_Temp
     <int> <char>     <num>
  1:     1     WZ  3.377826
  2:     2     WZ  3.925800
  3:     3     WZ  5.818481
  4:     4     WZ  9.270805
  5:     5     WZ 13.398191
 ---                       
116:     1     NC  6.789808
117:     2     NC  5.682581
118:     3     NC  5.837500
119:    11     NC 10.978269
120:    12     NC  8.716957

##Plot Previous Quesiton

ggplot(avTempA, aes(x = Month, y = m_Temp, color = Area)) + 
  geom_line() +
  labs(y = "Mean Temperature")

DISCLAIMER:

ChatGPT was used during the process of writing the code for the purpose of debugging and fixing errors in the code.