【问题标题】:R - How to subset a table between two specific dates?R - 如何在两个特定日期之间对表格进行子集化?
【发布时间】:2014-09-06 02:19:23
【问题描述】:

我有八年的每小时数据值,我想对特定年份内的所有值进行子集化。例如 2007 年的数据集,2008 年的另一个数据集,依此类推。目前我的日期格式有很多问题,因为当我指定一个时间段时,我会得到另一个日期段。

这是我的桌子: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) 

非常感谢您的帮助,

亲切的问候, 达尔文

【问题讨论】:

    标签: r


    【解决方案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
    

    【讨论】:

    • 在函数中粘贴LValley 是个坏主意,最好将其作为参数传入。或者使用subset,或者使用filter from dplyr
    猜你喜欢
    • 2018-01-06
    • 2017-05-12
    • 2021-10-12
    • 2021-12-14
    • 2018-12-29
    • 1970-01-01
    • 2014-12-11
    • 2015-02-11
    • 2019-10-26
    相关资源
    最近更新 更多