这是一个简单的数据
Date;Time;Global_active_power;Global_reactive_power;Voltage;Global_intensity;Sub_metering_1;Sub_metering_2;Sub_metering_3
16/12/2006;17:24:00;4.216;0.418;234.840;18.400;0.000;1.000;17.000
16/12/2007;17:25:00;5.360;0.436;233.630;23.000;0.000;1.000;16.000
16/12/2008;17:26:00;5.374;0.498;233.290;23.000;0.000;2.000;17.000
我写了以下代码
data <- read.table("foo.txt", sep=";", header=T, stringsAsFactors=F)
data$Date <- as.Date(data$Date, "%d/%m/%Y")
subset(data, Date=as.Date("2006-12-16"))
但输出全部是3行而不是1
好奇。大于号但不起作用=
subset(data, Date>as.Date("2006-12-16"))
按预期返回2行。
一些谷歌搜索显示这是有效的
subset(data, Date %in% as.Date("2006-02-01"))
但为什么不=
?
答案 0 :(得分:1)
如果我们查看?subset
## S3 method for class 'data.frame'
subset(x, subset, select, drop = FALSE, ...)
subset:表示要保留的元素或行的逻辑表达式: 缺失值视为错误。
=
是名称的assigning
值,而==
运算符允许比较值并返回逻辑表达式
所以,
subset(data, Date == as.Date("2006-02-01"))
与%in%
一样有效。如果有多个日期值,我会使用%in%
,因为==
会更快。