有条件地在R中选择两个数字行值

时间:2016-10-11 02:52:40

标签: r subset

我正在尝试将数据集子集化,以便在2011年第7个月之前移除所有值。我在不同的列中有年和月。

我所做的事情我知道逻辑错误(输出错误),但似乎无法找到正确的方法:

state_in2_check <-  subset(state_in2, Month > 6 &  Year > 2011)

1 个答案:

答案 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" )
)

请注意,我在两个日期转换中都表示该月的日期相同,这意味着它们仅根据月/年进行比较。