Re: [問題] 如何找出每天最低溫的時間
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章