【发布时间】:2018-11-08 09:03:25
【问题描述】:
我建立了与内部 Teradata 数据库的连接。为了让您知道我的问题,我在下面提供了一个示例。
我要做的是按 my_date 过滤列并按 my_key 缩小范围。
但我想保留丢失的结果,但过滤器以某种方式将它们丢弃在我的 my_result 中。如果不可用,下面的代码再次删除它们。正如在 cmets @zx8754 中提到的,我尝试将 is.na(my_date) 添加到过滤器中,但没有成功。我也试过is.empty、is.null、complete 而不是collect。
任何帮助将不胜感激。
可重复测试
# Create my_df
my_key <- c(1, 2, 3,4)
my_date <- as.Date(c('2018-07-01','2018-08-01','2018-09-01','2018-09-01'))
my_df <- data.frame(my_date, my_key)
# Filter_mydf
my_result <- my_df %>%
select (my_date,my_key)%>%
filter(between(my_date ,as.Date("2018-08-01"),as.Date("2018-09-01")),
my_key %in% c(1,2,3))%>%
collect()
我的结果
my_date my_key
2018-08-01 2
2018-09-01 3
所需的 my_result
my_date my_key
NA 1
2018-08-01 2
2018-09-01 3
【问题讨论】:
-
尝试使用 is.na?
filter((between(col_date,20180701,20180930) & col_key %in% c(12345,54321)) | is.na(col_date)) -
欢迎来到 StackOverflow!请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
-
相关github帖子:github.com/tidyverse/dplyr/issues/3196
-
@zx8754 谢谢,但是 is.na(col_date) 在没有丢失数据的情况下导致相同的结果。
-
请提供可重现的数据。所以我们可能会遇到和你一样的问题。
标签: r dplyr na pipes-filters