R排除日期列表不起作用

时间:2018-07-18 13:59:17

标签: r date

我遇到一种情况,我试图使用%in%和!排除日期列表(例如'2018-06-03','2018-06-04')。操作员,但我没有成功。我正在使用的代码:

样本数据

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

2 个答案:

答案 0 :(得分:1)

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

我测试了下面的代码,它可以工作。在第一种情况下,DATE是字符串,而在df2中,DATE_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"))))

答案 1 :(得分:0)

df<-data.frame(date=as.Date(c("2018/06/01","2018/06/01","2018/07/01"),),order=sample(21111:2220,3),sales=sample(100:300,3))

> df
        date order sales
1 2018-06-01  6001   185
2 2018-06-01  7494   229
3 2018-07-01 19223   169
#sample df
dates_exclude<-as.Date("2018/06/01") #dates you want to exlude

df[df$date!=dates_exclude,] #df exluding dates
df[!df$date %in% dates_exclude,] #df excluding dates using %in%

df[df$date!=dates_exclude,]
        date order sales
3 2018-07-01 19223   169