【问题标题】:How can I populate empty cells with a specific value during an extract?如何在提取过程中使用特定值填充空单元格?
【发布时间】:2019-03-29 23:57:10
【问题描述】:

使用 mongolite 包,我创建了一个 MongoDB 连接,然后提取了一些数据:

con <- mongo(collection = col,
             db = "db",
             url = "someurl")

data <- con$find(
            query = '{"_created_at": { "$gte": { "$date": "2018-10-01T00:00:00Z" }, "$lte": { "$date": "2018-10-31T23:59:59Z" } } }',
            fields = '{}'
)

生成的数据框如下所示:

有没有办法将特定值(例如 0"No data")插入到 NA 和/或 &lt;NA&gt; 即时出现/同时从 MongoDB 系统提取数据的区域?

我给出的例子是一个玩具例子。

在现实世界中,我将提取大量数据,因此能够将其他值输入到空单元格中,这将比在提取完成后处理庞大的数据帧更有效。

【问题讨论】:

  • 也许data[ is.na(data) ] &lt;- "No data"
  • df$customerName[df$customerName==NA| is.na(df$customerName)] = your_value。这是整个数据一列的示例,您可以按照@zx8754 回答。
  • 谢谢你们,这很好,但我应该指定我希望能够在数据提取过程中执行此操作。我已经相应地更新了我的问题。这可能吗?
  • 解压后为什么不行? (只是好奇)
  • @zx8754 我给出的例子是一个玩具例子;在现实世界中,我将一次性提取大量数据,并且能够即时替换非当前值将是一种更有效的方法。

标签: r mongodb mongolite


【解决方案1】:

如果您有大量数据需要即时处理,您可以在mongo$find() 方法中指定自定义handler 函数,也可以使用mongolite iterator 读取单个记录,以便处理随心所欲。

【讨论】:

  • 我明白了。因此,假设我单独遍历每条记录,我将如何在此过程中替换 NA/&lt;NA&gt; 值?
  • 我构建了一个迭代器,但输入的结果是一个列表(详见此处:jeroen.github.io/mongolite/query-data.html#iterating) - 有没有办法从中获得扁平化的结果?
猜你喜欢
  • 2021-12-04
  • 2021-08-24
  • 1970-01-01
  • 2015-06-04
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多