我有一个包含很多日期的数据集。我想删除所有可用年份(2015、2016、2017和2018)从1月1日到2月2日的时间间隔中不存在的所有日期
new_data <- my_data %>%
filter(data > "2015-01-01" & data <"2015-02-02" &
data > "2016-01-01" & data <"2016-02-02" &
data > "2017-01-01" & data <"2017-02-02" &
data > "2018-01-01" & data <"2018-02-02")
我尝试了此命令,但没有得到想要的结果:
sdf_nrow(new_data)
0
我正在使用spark,这就是为什么我必须使用dplyr
答案 0 :(得分:1)
您当前说的是“日期是2015年1月,同时是 2016年1月……等等”。显然,这永远都是不正确的,因为这些日期范围不会重叠。您需要使用“或”而不是“ and”:
new_data <- my_data %>%
filter(
data > "2015-01-01" & data < "2015-02-02" |
data > "2016-01-01" & data < "2016-02-02" |
data > "2017-01-01" & data < "2017-02-02" |
data > "2018-01-01" & data < "2018-02-02"
)
此外,请确保您的data
(而不是date
?)列实际上引用了 date ,并且具有适当的类型,与字符串。
当心具有运算符优先级:之所以起作用,是因为&
的优先级比|
高,但是许多人发现它更易于理解,并且在内部… & …
表达式中加上括号。>