fork download
  1. library(dplyr)
  2.  
  3. df <- read.csv("typhoon.csv")
  4.  
  5. # 因為當日24時與隔夜0時是同一個, 因此再產生一個新欄位Hour_new, 與Hour相同
  6. # 但如果颱風跨日存在, 則Hour_new的最後一筆將變成24
  7. dft <- df %>%
  8. mutate(date = paste(Year, Month, Day, sep = "-"),
  9. date = as.Date(date)
  10. ) %>%
  11. group_by(CycloneNo) %>%
  12. mutate(# 對每一列, 以下一列日期減去該列日期, 如果 = 1代表颱風跨日
  13. daydiff = as.integer(lead(date) - date),
  14. # 由於最後一列的下一列不存在, 會有NA, 用0補NA
  15. daydiff = ifelse(is.na(daydiff), 0, daydiff),
  16. # 如果某一列daydiff == 1, 將該列Hour轉換成24, 否則保留原來Hour
  17. Hour_new = ifelse(daydiff == 1, 24, Hour)
  18. ) %>%
  19. group_by(date) %>%
  20. # 計算每天颱風存在的時數
  21. # 由於有可能存在當天只有一筆 (Hour = 18), 但颱風跨日, 因此min從原本的Hour欄位取值
  22. mutate(Hour_sum = max(Hour_new) - min(Hour)) %>%
  23. filter(Hour_sum >= 18 & row_number()==1) %>%
  24. ungroup()
Success #stdin #stdout #stderr 0.53s 49896KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
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

Error in file(file, "rt") : cannot open the connection
Calls: read.csv -> read.table -> file
In addition: Warning message:
In file(file, "rt") :
  cannot open file 'typhoon.csv': No such file or directory
Execution halted