过滤数字列名称上的非NA

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了过滤数字列名称上的非NA相关的知识,希望对你有一定的参考价值。

我正在尝试使用as.Date变量过滤包含数字/日期名称的列。

作为示例,考虑这个小型数据库:

dt <- data.table(
names = c("A", "B", "C"),
`2020-01-01` = c(1, NA, 2),
`2020-01-02` = c(3, 4, 5),
`2020-01-03` = c(6, 7, 8)
)

我目前正在按以下方式过滤所需的日期列:

dt1 <- dt %>% filter(!is.na(`2020-01-01`)) %>% select(names)

我的想法是创建一个meeting_date变量,该变量应该用作我所有R代码的日期参考。

meeting_date <- as.Date("2020-01-01")

当然是代码:

dt1 <- dt %>% filter(!is.na(meeting_date)) %>% select(names)

不起作用。原因是缺少反引号,所以没有成功,我尝试了以下代码:

dt1 <- dt %>% filter(!is.na(paste("`", meeting_date, "`", sep=""))) %>% select(names)
dt1 <- dt %>% filter(!is.na(noquote(paste("`", meeting_date, "`", sep="")))) %>% select(names)

有人知道如何进行吗?谢谢!

答案

您可以做:

meeting_date <- as.Date("2020-01-01")

dt %>%
 filter_at(vars(one_of(as.character(meeting_date))), ~ !is.na(.))

  names 2020-01-01 2020-01-02 2020-01-03
1     A          1          3          6
2     C          2          5          8

以上是关于过滤数字列名称上的非NA的主要内容,如果未能解决你的问题,请参考以下文章

如何过滤掉 teradata 文本字段中的非数字值?

用列表 Pyspark Dataframe 中的值替换 NA

PySpark:如何删除 DataFrame 中的非数字列?

过滤掉pyspark RDD中的非数字值

如何在不知道 NA 值模式的情况下快速将列转换为数字

具有动态变量名称的 r dplyr 过滤器