【问题标题】:Why does R dplyr filter function induces changes in non filtered rows?为什么 R dplyr 过滤器函数会导致未过滤行发生变化?
【发布时间】:2020-07-11 00:49:18
【问题描述】:

我有一个关于 R dplyr 过滤功能的问题。我有一个包含几列的 tibble data1,我想删除列“CODE_FRAIS”填充有代码“CINT”的所有行。 我这样做的代码是:

data1 <- data1 %>% filter(CODE_FRAIS != "CINT")

但是这样做,过滤后的表只为所有数字列返回 0。我不明白为什么。它让我发疯。特别是因为这种方法通常效果很好。 有没有人知道这里发生了什么(请,除了那些涉及我的智力的人^^)非常感谢你提前!

【问题讨论】:

  • 能否提供样本数据?
  • 您尝试了吗:data1 %>% dplyr::filter(CODE_FRAIS != "CINT") ,因为除了 dplyr 之外,r 中可能还存在多个过滤器函数。
  • 我只是试了一下,结果没有改变...

标签: r filter dplyr


【解决方案1】:

假设您想用 0 替换行。您不能有不平衡的表,您可以替换这些值或将它们等同于 NA,然后使用!is.na 过滤掉。

data1$CODE_FRAIS=ifelse(data1$CODE_FRAIS=="CINT",0,data1$CODE_FRAIS)

【讨论】:

  • 好吧,其实问题似乎和过滤功能无关,而与我的数值列的格式有关。它说的是数字,它看起来是数字,但它的行为不像数字。
  • 您好! Shivam Sarin,到目前为止,问题仍然存在。我通过装配另一个列成功地删除了所有“CINT”行,它工作正常。但我仍然很好奇 code_frais 列发生了什么。无论如何,非常感谢所有花时间回答的人!如果我最终发现,我会在这里发布!
猜你喜欢
  • 2019-04-04
  • 2019-07-04
  • 2015-11-10
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多