在R中找不到对象'日期'

时间:2016-02-07 20:14:29

标签: r

我想在两个不同的日期之间对我的数据集进行子集化。我用';'将文本文件中的数据加载到R作为分隔符。

x <- read.table("household_power_consumption.txt", sep = ";", header = TRUE)

head(x)

给了我这个:

[head(x)][1]

数据集包含超过200000行,因此我需要仅对两个特定日期的数据进行子集化。 所以我尝试了这个:

x[Date >= as.Date("2007-02-01") | Date <= as.Date("2007-02-02")]

但我看到以下错误:

Error in `[.data.frame`(x, Date >= as.Date("2007-02-01") | Date <= as.Date("2007-02-02")) : object 'Date' not found

那么这里有什么问题?如何对数据进行子集化?

1 个答案:

答案 0 :(得分:2)

您的代码中存在一些问题。

  1. 正如评论中所讨论的,数据框的子集需要不同的方法。也许最简单的方法是使用x$Date代替Date
  2. 您想要选择两个特定日期。为此,您可以使用

    x$Date == as.Date("2007-02-01") | x$Date == as.Date("2007-02-02")
    

    (与逻辑OR相关联)或

    x$Date >= as.Date("2007-02-01") & x$Date <= as.Date("2007-02-02")
    

    (与逻辑AND连接)。 代码中的版本选择任何可能的日期,因此无用。

  3. 您没有指定要选择的列。我认为,目的是选择与您的选择标准相对应的整个条目行。为此,您需要在关闭方括号之前在末尾添加逗号。

  4. 修改

    不知道存储列x$Date的格式,将该内容包装到as.Date()中可能会有所帮助。

    总之,这应该可行:

    x[as.Date(x$Date) >= as.Date("2007-02-01") & as.Date(x$Date) <= as.Date("2007-02-02"),]