2014-09-05 76 views
0

我每小時的數據值爲八年,並且我希望將特定年份內的所有值分組。例如2007年的數據集,2008年的數據集等等。目前,我在日期格式上遇到了很多問題,因爲當我特定一段時間時,我會得到另一個日期。R - 如何在兩個特定日期之間對錶進行子集劃分?

這裏是我的表:LValley,那就是我曾嘗試:

LValley <- read.table("C:/LValley.txt", header=TRUE, dec = ",", sep="\t") 

year2007 <- subset(LValley, date > as.Date("01.01.2007 01:00", "%d.%m.%Y %H:%M") & date < as.Date("01.02.2008 01:00", "%d.%m.%Y %H:%M")) 

但它返回我的另一個日期期間,我想正是從2007年

我的所有數據也都用這個例子的功能,和我有同樣的結果#Subset a dataframe between 2 dates

mydatefunc <- function(x,y){LValley[LValley$date >= x & LValley$date <= y,]} 

DATE1 <- as.Date("01.01.2007 01:00", "%d.%m.%Y %H:%M") 
DATE2 <- as.Date("01.01.2008 00:00", "%d.%m.%Y %H:%M") 

Test2007 <- mydatefunc(DATE1,DATE2) 

我會非常感謝你的幫助,

親切的問候, 達爾文

回答

1

您需要的date列在文件中轉換爲date類。例如:

LValley <- read.table("LValley.txt", header=TRUE,dec=",", sep="\t", stringsAsFactors=FALSE) 

    date1 <- as.Date(LValley$date, "%d.%m.%Y %H:%M") 
    Test2007 <- subset(LValley, date1>=DATE1 & date1 <=DATE2) 
    dim(Test2007) 
    #[1] 6249 4 
+0

堅持'LValley'在功能上是一個壞主意,最好在把它作爲一個參數。或者使用'subset',或者使用'dplyr'中的'filter'。 – Spacedman 2014-09-05 18:01:48

+0

@Spacedman謝謝,編輯了代碼。 – akrun 2014-09-05 18:20:52

+0

謝謝@akrun和Spacedman它工作的很棒! – 2014-09-06 09:29:27

相關問題