【问题标题】:In R, how can I filter a data frame by data type using dplyr?在 R 中,如何使用 dplyr 按数据类型过滤数据框?
【发布时间】:2018-07-25 21:31:20
【问题描述】:

我仍在学习 R,如果有人可以向我展示一种使用 dplyr 按数据类型(即仅因子)过滤数据框的简单方法,我将不胜感激,这样输出只是所选数据的变量列表类型?

提前致谢!

编辑:

正如善意指出的那样,我遗漏了一个示例(第一篇文章,抱歉!)。我正在尝试执行以下操作:

df %>%
  filter(typeof(.) == "integer") %>%
  names()

上面只返回我数据框中的所有变量,而不仅仅是我想要的整数类型的变量。我也希望能够过滤其他数据类型,而不仅仅是整数:)

【问题讨论】:

  • 我不知道这是否对您有帮助,但在这里您可以按列类型查看:markhneedham.com/blog/2014/09/29/…
  • 大概类似于%>% select( is.factor(.) ) 的内容,但您还没有阅读SO“手册”,您的问题也没有minimal reproducible example
  • 您是只关注因素,还是想要一个适用于任何给定数据类型的解决方案?你说过 即只有因素,但我怀疑你的意思是例如只有因素
  • 抱歉,这是我的第一篇 SO 帖子 - 我会相应地编辑问题!迈克,你是对的,我正在寻找一种可以用于任何数据类型的解决方案:)
  • @Tjebo 感谢您对使用selectfilter 的澄清,的确,这可能就是我遇到麻烦的原因!

标签: r dplyr


【解决方案1】:

我会使用基本 R 来做这个(与包无关):

get_names = names(df)[sapply(df, is.factor)]
df = df[,get_names]

dplyr,你可以这样做:

df <- df %>% 
    select_if(is.factor)

【讨论】:

  • 你好 YOLO,谢谢你的回答!除非有人使用 dplyr 提供答案(这对我最有帮助),否则我会将您的答案标记为正确,因为它也符合我的要求! :)
  • @Sean 添加到答案中。
  • 我很困惑。 OP要求filter,但这是select ...?我想 select 是 OP 从一开始就想要的......
  • 对不起@Tjebo 让您感到困惑,正如我所说,这是我的第一篇文章,所以仍然要掌握这种方式!尽管 YOLO 的答案使用了select_if,但他们的答案仍然按数据类型过滤(如“处理或评估(项目)以拒绝那些不需要的项目”),这正是我正在寻找的。但是,我一定会更仔细地表达我未来的问题:)
  • @Sean haha​​ 别担心,这是德国幽默,试图指出一个混淆的术语(正如我在上面的评论中指出的,对你的问题)
【解决方案2】:

只是为了添加到@YOLO 的答案,您可以像这样将所有内容放在一行中

df = df[,sapply(df, is.factor, simplify = TRUE)]

【讨论】:

    猜你喜欢
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多