我想在两个不同的日期之间对我的数据集进行子集化。我用';'将文本文件中的数据加载到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
那么这里有什么问题?如何对数据进行子集化?
答案 0 :(得分:2)
您的代码中存在一些问题。
x$Date
代替Date
。您想要选择两个特定日期。为此,您可以使用
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
连接)。
代码中的版本选择任何可能的日期,因此无用。
您没有指定要选择的列。我认为,目的是选择与您的选择标准相对应的整个条目行。为此,您需要在关闭方括号之前在末尾添加逗号。
修改强>
不知道存储列x$Date
的格式,将该内容包装到as.Date()
中可能会有所帮助。
总之,这应该可行:
x[as.Date(x$Date) >= as.Date("2007-02-01") & as.Date(x$Date) <= as.Date("2007-02-02"),]