“%in%”命令与r中的常规子集化

时间:2015-02-05 19:33:15

标签: r

我有一个简单的问题。为什么r会为

返回不同的结果
dim(data2[data2$as_of_date=="2014-12-31",])
dim(data2[data2$as_of_date%in%c("2014-12-31"),])

输出:

> dim(data2[data2$as_of_date=="2014-12-31",])
[1] 48684    92
> dim(data2[data2$as_of_date%in%c("2014-12-31"),])
[1]  0 92

1 个答案:

答案 0 :(得分:6)

%in%无法识别您日期的“字符”形式。考虑:

> as.Date("2014-12-31") == "2014-12-31"
[1] TRUE
> as.Date("2014-12-31") %in% "2014-12-31"
[1] FALSE

您需要使用:

data2[as.character(data2$as_of_date) %in% c("2014-12-31"),]

虽然在这种情况下显然==可以正常工作,因为您只匹配一个值。