0
我有一個巨大的數據集,我必須按時間範圍進行子集化並將子集寫入新的數據框。我的問題是在第二天12PM和12PM之間對數據集進行子集化。R通過幾天的時間範圍的子集行
白天小型虛擬子集。
dfrm <- data.frame(a=rnorm(240),dtm=as.POSIXct("2007-03-27 05:00", tz="GMT")+3600*(1:240))
dfrm
## Create list of dates in dfrm
date.start<-format(min(dfrm$dtm),"%Y-%m-%d")
date.end<-format(max(dfrm$dtm),"%Y-%m-%d")
datum<-seq(as.Date(date.start),as.Date(date.end),by="days")
## Get Date and Time from dfrm
dfrm$day<-as.POSIXlt(as.character(dfrm$dtm),format="%Y-%m-%d")
dfrm$clock<-as.POSIXlt(as.character(dfrm$dtm))
dfrm$clock<-format(dfrm$clock,format="%H:%M:%S")
## write dfrm daywise
j<-1
while (j<=length(datum))
{
name <- paste("day", datum[j], sep = "")
assign(name,dfrm[which(dfrm$day==format(datum[j],"%Y-%m-%d")),])
j<-j+1
}
謝謝你的幫助。
你想'DFRM < - data.frame(A = RNORM(240),DTM = as.POSIXct(「2007-03-27 05:00」)+ 3600 *(1:240)); split(dfrm,cut(dfrm $ dtm,breaks = seq(as.POSIXct(paste0(as.Date(min (dfrm $ dtm)) - 1,「12:00:00」)),as.POSIXct(paste0(as.Date(max(dfrm $ dtm))+ 1,「12:00:00」)),by =「1 day」)))'? – lukeA
感謝您的回覆。我需要在循環內部執行解決方案,因爲我必須在循環內部執行更多步驟。 – Firefly
編輯第一條評論的速度很慢......感謝您的回覆。我需要在循環內部執行解決方案,因爲我必須在循環內部執行更多步驟。我用你的例子的序列部分作爲「datum」,所以我可以將它們用作斷點。任何方式來執行循環內的子集?因此,要選擇數據[j]和數據[j + 1]之間的所有文件並將它們寫入新的數據幀? – Firefly