【问题标题】:dplyr::filter() for databasedplyr::filter() 用于数据库
【发布时间】:2023-03-30 23:01:01
【问题描述】:

我正在使用dplyr::filter() 函数来过滤我的数据。我有一个名为produktslag_id 的列,format(class)character

我的代码如下试图过滤掉02 AND 08,但它不起作用。

db_sales %>%  
  filter(produktslag_id!="02" & produktslag_id!="08") %>% 
  group_by(produktslag_id) %>% 
  count()

我还是明白了:

produktslag_id   n
<chr>    <int>

01       1330742            
02       139095         
03       636292         
04       1116240            
05       280963         
06       565081         
07       231681         
08       55696

有什么建议吗?

我试过了

db_sales %>%
  mutate(produktslag_id=as.numeric(produktslag_id)) %>% 
  filter(produktslag_id!=02 & produktslag_id!=08)

它可以工作

但只是想知道为什么我的原始代码不起作用以及 0208 的字符串可能是什么?

【问题讨论】:

  • 您显示的代码应该可以工作,如果这就是代码的实际情况。我的第一个想法是检查隐藏或不可见的字符。
  • 您的号码周围可能有额外的空白?你可以试试在他们周围使用trimws()
  • 也许是间距? produktslag_id !="02"produktslag_id != "02" 而不是 produktslag_id!="02"

标签: r database filter dplyr


【解决方案1】:

这是很长的空格字符串。 我正在使用 R 降价。所以我什么也没看到。 然后我将代码放在控制台中,只选择该列,我得到了 02 打印出来,如 '02' 然后找到原因。 谢谢你的cmets

【讨论】:

    猜你喜欢
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2017-12-26
    相关资源
    最近更新 更多