2015-06-29 64 views
3

我試圖從兩個特定日期時間之間的數據幀中提取一系列數據;例如在兩個日期之間提取一條河流的CFS(速度)。我搜遍了一堆R書,遍佈網絡,發現了一些可能的答案,但不適合我的特定應用。在R數據框中提取兩個日期之間的分段

我會認爲這應該是一個相當簡單的任務在R.實現我可以使用MySQL在睡夢中進行,但需要在執行R.它的數據幀的

格式:

日期,CFS,溫度,

2015年6月1日00:00,2009年,12.5

2015年6月1日00:30,2010年,12.5

data <- read.table("~/SomeObscureDataDirectory/RiverDataFull", sep="\t", header=TRUE) sub1 <- subset(data, data$Date >= 2015-06-01 00:00 & data$Date <= 2015-06-01 07:15)

// ---------------->

> data <- read.table("~/SomeObscureDataDirectory", sep="\t", header=TRUE) 
> sub1 <- subset(data, data$Date >= 2015-06-01 00:00 & data$Date <=2015-06-01 07:15) 
    Error: unexpected numeric constant in "sub1 <- subset(data, data$Date >= 2015-06-01 00" 

我在一個解決方案虧損,你的專業知識,將不勝感激。我假設日期格式不允許我搜索它?注意:我無法更改它所在的RiverDataFull.tab文件中的格式。

+0

什麼是日期列的類? –

回答

4

數據幀的date列是一個因素。因此,您需要將此列轉換爲日期類型,並與其他日期類型進行比較。您可以使用as.POSIXct()功能來做到這一點:

data$Date <- as.POSIXct(data$Date, format='%Y/%m/%d %H:%M'); # convert to date 
sub1 <- subset(data, data$Date >= as.POSIXct("2015-06-01 00:00") & 
       data$Date <= as.POSIXct("2015-06-01 07:15")) 

在你原來的代碼,你試圖使用原始數字和字符串,這是行不通的。

+0

謝謝。我想我忽視了這個明顯的問題。我會測試並回復。 –

+0

我得到了另一個錯誤,但我確定我可以解決這個問題。 1:在eval(expr,envir,enclos)中: 不兼容的方法(「Ops.factor」,「Ops.POSIXt 「)for」> =「 2:在eval(expr,envir,enclos)中: 」<=「' –

+0

@ JohnP.Newbury的不兼容方法(」Ops.factor「,」Ops.POSIXt「)回答。從你的錯誤看來,你的'日期'列是一個因素。在進行比較之前,您需要將其轉換爲日期類型。 –

相關問題