Re: [問題] 如何找出每天最低溫的時間

看板R_Language作者 (天)時間1年前 (2023/04/19 20:14), 編輯推噓1(100)
留言1則, 1人參與, 1年前最新討論串2/2 (看更多)
※ 引述《studioA (understand?)》之銘言: : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 我有一組1年8760筆 氣溫值數據 資料格式如下 : date hour air_Tempture : 2021-01-01 00 15.28 : 2021-01-01 01 15.28 : 2021-01-01 02 14.28 : . : . : 2021-12-31 21 11.89 : 2021-12-31 22 12.00 : 2021-12-31 23 11.45 : 我想要找出每一天最低溫以及最低溫的發生時間 : 但我遇到一些問題 程式出錯 : 還有有些天 最低溫同時發生在連續時段 : 例如 2021-2-10 最低溫是9.1℃ 但清晨3點~5點都是9.1℃ : 我如何挑出最接近黎明6時的時刻 例如上例的5點 : [程式範例]: : test_data %>% group_by(date) %>% : summarise( 'min_T' = min( air_Tempture ,na.rm = T ), : "min_hh" = .[[which( min( air_Tempture ,na.rm = T ),hh]] : [環境敘述]: : R4.0.3 : [關鍵字]: : : 選擇性,也許未來有用 : 我用data.table寫了一下 主要是靠.SD去取值 如果是用dplyr應該可以用left_join去做 library(data.table) set.seed(200) startDate <- as.Date("2023-01-01") numDates <- 31 DT <- data.table( date = rep(seq(startDate, startDate+numDates-1, 1), each=24), hour = rep(1:24, numDates), temperature = sample.int(40, 24*numDates, TRUE)/10 + 18 ) tempDT <- DT[ , .SD[temperature == min(temperature)], by=.(date)] outDT <- tempDT[ , .SD[which.min(abs(hour-6))], by=.(date)] outDT # tempDT date hour temperature 1: 2023-01-01 23 18.1 2: 2023-01-02 21 18.3 3: 2023-01-03 14 18.1 4: 2023-01-03 15 18.1 5: 2023-01-04 17 18.2 6: 2023-01-05 18 18.3 7: 2023-01-06 5 18.2 # outDT date hour temperature 1: 2023-01-01 23 18.1 2: 2023-01-02 21 18.3 3: 2023-01-03 14 18.1 4: 2023-01-04 17 18.2 5: 2023-01-05 18 18.3 6: 2023-01-06 5 18.2 如果想改成用dplyr的話 可以自行嘗試看看 不行再上來發問吧~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.229.239.131 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1681906460.A.580.html

05/01 05:25, 1年前 , 1F
感謝 成功解決我的問題
05/01 05:25, 1F
文章代碼(AID): #1aFziSM0 (R_Language)
文章代碼(AID): #1aFziSM0 (R_Language)