首页 > 解决方案 > R排除日期列表不起作用

问题描述

我有一种情况,我试图使用 %in% 和 ! 运营商,但我没有成功。我正在使用的代码:

样本数据

DATE         ORDER    SALES
2018-06-01  253626    200
2018-06-02  253621    300
2018-06-02  253621    100   
2018-06-03  253636    200
2018-06-03  253621    500 
2018-06-04  253621    500
2018-06-05  253621    500

var <- data %>% select(order,date,sales) %>% 
mutate(weekday = wday(date, label=TRUE)) %>% 
filter(!wday(date) %in% c(1, 7) & !(date %in% as.Date(c('2018-06-03','2018-06-04'))) %>%
 group_by(day=floor_date(date,"day")) %>% 
summarise(sales=sum(sales))

预期产出

dates           sales 
2018-06-01      500
2018-06-02      400
2018-06-05      500

有什么帮助吗?Tks

标签: rdate

解决方案


您确定该列DATE包含日期值吗?还是它们是字符串?

我测试了下面的代码,它可以工作。在第一种情况下,DATE是一个字符串,而在df2DATE_D是一个日期。在这两种情况下,都会删除 6 月 3 日和 4 日的记录。

df <- read.table(text = "
DATE         ORDER    SALES
2018-06-01  253626    200
2018-06-02  253621    300
2018-06-02  253621    100   
2018-06-03  253636    200
2018-06-03  253621    500 
2018-06-04  253621    500
2018-06-05  253621    500
", header = TRUE, stringsAsFactors = FALSE)

df %>%
  filter(!(DATE %in% c("2018-06-03", "2018-06-04")))

df2 <- df %>%
  mutate(DATE_D = as.Date(DATE))

df2 %>%
  filter(!(DATE_D %in% as.Date(c("2018-06-03", "2018-06-04"))))

推荐阅读