2014-09-05 57 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

相关问题