R中子集化数据的结果不一致

时间:2014-12-22 20:21:53

标签: r subset

我的数据框的日期格式为YYYY/MM/DD。我尝试以两种方式对其进行分组并获得不同的值:

方法1:

 a <- mydata[(mydata$Date > 2010-01-01),]

结果:

这给了我包括2008年,2009年等日期的结果

方法2:

 a <- mydata[(mydata$Date > 2010/01/01),]

结果:

这给了我正确的结果。

正如您所看到的,区别在于我格式化日期的方式 - “/”与“ - ”。有人可以向我解释一下有什么区别吗?数据框中的日期本身采用YYYY-MM-DD的形式,这就是我在方法1中使用连字符的原因。

1 个答案:

答案 0 :(得分:1)

如果您的日期是字符值(而不是在打印到控制台时看起来不一样的因素或日期),那么您可以使用&#34;&gt;&#34;或&#34;&lt;&#34;或&#34; ==&#34;但要这样做,需要引用值的表达式。否则你只需得到算术值

> 2010-01-01
[1] 2008

不会抛出任何错误,因为您可以比较数字和字符向量,但结果不符合您的喜好:

> 2010-01-01 > "2007-01-01"
[1] TRUE

为了安全并获得有意义的结果,请尝试以下方法:

 asub <- mydata[(as.character(mydata$Date > "2010-01-01"), ]

as.character会将因子(或日期)分割的向量转换为字符。

相关问题