我正在尝试将数据集子集化,以便在2011年第7个月之前移除所有值。我在不同的列中有年和月。
我所做的事情我知道逻辑错误(输出错误),但似乎无法找到正确的方法:
state_in2_check <- subset(state_in2, Month > 6 & Year > 2011)
答案 0 :(得分:1)
@thelatemail在评论中为您提供了可行的解决方案。你的问题是你要求R分别匹配两个逻辑检查,但每个检查都依赖于另一个。例如,你不会得到任何“1月”日期(因为你只接受大于6的月份),即使“2013年1月”会没事。 @ thelatemail的解决方案将支票分开,这样就可以接受低于6的月份,只要它们的年数大于2011年。
另一种方法是在子集化的同时转换为日期,这种方式更合乎逻辑:
Month <- 7
Year <- 2011
as.Date( paste( Year, Month, 15, sep = "-" ) )
[1] "2011-07-15"
您可以将更简单的转换用于更多(在我看来)逻辑方式中的子集:
state_in2_check <- subset(state_in2,
as.Date( paste( Year, Month, 15, sep = "-" ) ) >
as.Date( "2011-06-15" )
)
请注意,我在两个日期转换中都表示该月的日期相同,这意味着它们仅根据月/年进行比较。