Home > Enterprise >  calculate number of frost change days (number of days) from the weather hourly data in r
calculate number of frost change days (number of days) from the weather hourly data in r

Time:10-15

I have to calculate the following data Number of frost change days**(NFCD)**** as weekly basis.
That means the number of days in which minimum temperature and maximum temperature cross 0°C. Let's say I work with years 1957-1980 with hourly temp.

Example data (couple of rows look like):

Date    Time (UTC)  temperature 
1957-07-01  00:00:00    5
1957-07-01  03:00:00    6.2
1957-07-01  05:00:00    9
1957-07-01  06:00:00    10
1957-07-01  07:00:00    10
1957-07-01  08:00:00    14
1957-07-01  09:00:00    13.2
1957-07-01  10:00:00    15
1957-07-01  11:00:00    15
1957-07-01  12:00:00    16.3
1957-07-01  13:00:00    15.8

Expected data:

year month  week    NFCD 
1957    7   1        1 
1957    7   2        5 

CodePudding user response:

dat <- data.frame(date=c(rep("A",5),rep("B",5)), time=rep(1:5, times=2), temp=c(1:5,-2,1:4))
dat
#    date time temp
# 1     A    1    1
# 2     A    2    2
# 3     A    3    3
# 4     A    4    4
# 5     A    5    5
# 6     B    1   -2
# 7     B    2    1
# 8     B    3    2
# 9     B    4    3
# 10    B    5    4
aggregate(temp ~ date, data = dat, FUN = function(z) min(z) <= 0 && max(z) > 0)
#   date  temp
# 1    A FALSE
# 2    B  TRUE

(then rename temp to NFCD)

CodePudding user response:

Using the data from r2evans's answer you can also use tidyverse logic:

library(tidyverse)
dat %>%
  group_by(date) %>%
  summarize(NFCD = min(temp) < 0 & max(temp) > 0)

which gives:

# A tibble: 2 x 2
  date  NFCD 
  <chr> <lgl>
1 A     FALSE
2 B     TRUE 
  • Related