【问题标题】:Filtering a data frame by values in a column [duplicate]按列中的值过滤数据框[重复]
【发布时间】:2011-11-14 22:30:28
【问题描述】:

我正在使用数据集 LearnBayes。对于那些想查看实际数据的人:

install.packages('LearnBayes')

我正在尝试根据列中的值过滤掉行。例如,如果列值为“水”,那么我想要该行。如果列值是“牛奶”,那么我不想要它。最终,我试图过滤掉所有饮料列是“水”的人。

【问题讨论】:

标签: r filter dataframe


【解决方案1】:

subset 命令不是必需的。只需使用数据框索引

studentdata[studentdata$Drink == 'water',]

阅读来自?subset的警告

这是一个旨在以交互方式使用的便利功能。为了 编程最好使用标准的子集功能,如 ‘[’,尤其是参数的非标准评估 “子集”可能会产生意想不到的后果。

【讨论】:

  • 谢谢@adamleerich。出于好奇,逗号背后的原因是什么?
  • [ ] 语法以矩阵在数学中索引的正常方式索引二维数据帧:行然后列,用逗号分隔。在这种情况下,我们传递了一个行索引向量(studentData$Drink == 'water' 挑选出我们感兴趣的行),但是由于我们不想限制我们为这些行获取哪些列(我们想要所有这些行),我们将索引对的列部分留空(因此逗号后没有任何内容)。这是语法糖,以避免必须给出所有列索引的向量。
  • 当我需要使用 符号时会发生什么?
  • 这不会过滤掉数据,它只是将不符合条件的行替换为 NA。需要另一个操作来删除这些行
  • 谢谢!
【解决方案2】:

试试这个:

subset(studentdata, Drink=='water')

应该这样做。

【讨论】:

  • 谢谢!我尝试了一些变体,但一定是标点符号或类似的愚蠢的东西。感谢您的帮助。
【解决方案3】:

我想我会用dplyr 解决方案来更新它

library(dplyr)    
filter(studentdata, Drink == "water")

【讨论】:

  • 或使用管道studentdata %>% filter(Drink == "water")
猜你喜欢
  • 1970-01-01
  • 2020-11-16
  • 2019-12-03
  • 2017-11-12
  • 1970-01-01
  • 2015-12-02
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多