仅选择日期和数字列

问题描述 投票:0回答:1

有没有一种有效的方法来选择R中的日期和数字列?

df <- data.frame(
    Date=c("10/11/2012","10/12/2012"),
    AE=c(1211,100),
    Percent=c(0.03,0.43),
    Name = c("A", "B")
)

这样,我可以使用is.numeric函数检查列是否为数字,然后使用几种方式之一进行子集设置,但是有一个函数来检查列是否为日期以及如何使用多个条件进行子集设置。

我发现在lubridate包中有一个函子is.Date,但它不起作用

#does not work
df <- df %>% 
    select_if(is.numeric|is.Date)
r dplyr subset
1个回答
2
投票

dplyr用于选择的动词允许使用各种提供条件的方法>

  • 原始函数,如is.numeric,将以列数据(向量)作为其一个参数来调用;
  • [function(x) is.numeric(x) | inherits(x, "Date")中的匿名函数(R样式);]]
  • 使用R公式(~)称为“ purrr样式的lambda”,这似乎只是基本R anon-func的更紧凑形式,但是有一些区别,即您使用..x作为列数据的占位符,如以下答案所示>
df %>%
  select_if(~ is.numeric(.) | inherits(., "Date"))
#     AE Percent
# 1 1211    0.03
# 2  100    0.43

由于您的第一列实际上不是日期,所以我们将其修复

# df$Date <- as.Date(df$Date, format="%m/%d/%Y")
df %>%
  mutate(Date = as.Date(Date, format="%m/%d/%Y")) %>%
  select_if(~ is.numeric(.x) | inherits(.x, "Date"))
#         Date   AE Percent
# 1 2012-10-11 1211    0.03
# 2 2012-10-12  100    0.43
© www.soinside.com 2019 - 2024. All rights reserved.