【问题标题】:dplyr filter function gives wrong datadplyr 过滤函数给出错误的数据
【发布时间】:2015-07-12 03:28:36
【问题描述】:

我有以下数据集:(样本)

    Team    Job Question    Answer
1   1        1     2             1
2   1        1     3a            2
3   1        1     3b            2
4   1        1     4a            1
5   1        1     4b            1

我有 21 个团队,所以行数很多。我正在尝试过滤在实验中表现良好的团队行(使用 dplyr 包):

q10best <- filter(quest,Team==c(2,4,6,10,13,17,21))

但它给了我混乱的数据和许多缺失的行。 另一方面,当我使用:

q10best <- filter(quest,Team==2 | Team==4 | Team==6 | Team==10 | Team==13 | Team==17 | Team==21)

它为我提供了我想要的正确数据集。有什么区别?我在第一个命令中做错了什么? 谢谢

【问题讨论】:

  • 使用Team %in% c(...) 而不是Team==c(...)== 表示完全相等,因此它正在寻找与您的整个字符向量完全匹配的值。 %in% 表示查找属于该向量的值。
  • @scoa 如果你认为你应该回答这个问题

标签: r filter dplyr


【解决方案1】:

== 检查两个对象是否完全相同。您正在尝试检查一个对象(quest$Team 的每个元素)是否属于一个值列表。正确的做法是使用%in%

q10best <- filter(quest,Team %in% c(2,4,6,10,13,17,21))

【讨论】:

    猜你喜欢
    • 2017-01-07
    • 2011-08-03
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 2018-10-07
    • 2017-05-04
    • 1970-01-01
    相关资源
    最近更新 更多