小编Gop*_*lem的帖子

从R中的data.table中有条件地删除行

我有一个data.table,其字段为{id,menuitem,amount}.

这是交易数据 - 因此,ID是唯一的,但menuitem重复.现在,我想删除所有条目menuitem == 'coffee'.

另外,想要删除所有行amount <= 0;

在data.table中执行此操作的正确方法是什么?

我可以使用data$menuitem!='coffee'然后将int索引到data [] - 但这不一定有效并且不利用data.table.

任何指向正确方向的人都会受到赞赏.

r data.table

35
推荐指数
1
解决办法
7万
查看次数

从时间上提取小时的最快方式(HH:MM)

希望fastPOSIXct工作 - 但在这种情况下不工作.

这是我的时间数据(没有日期) - 我需要从他们那里得到小时数.

times <- c("9:46","11:06", "14:17", "19:53", "0:03", "3:56")
Run Code Online (Sandbox Code Playgroud)

这是错误的输出fastPOSIXct:

fastPOSIXct(times, "GMT")
[1] "1970-01-01 00:00:00 GMT" "1970-01-01 00:00:00 GMT"
[3] "1970-01-01 00:00:00 GMT" "1970-01-01 00:00:00 GMT"
[5] "1970-01-01 00:00:00 GMT" "1970-01-01 00:00:00 GMT"
Run Code Online (Sandbox Code Playgroud)

没有正确存在日期,它无法识别时间.

hour从方法data.tableas.ITime解决的目的,但看起来像大时代阵列慢.

library(data.table)
hour(as.ITime(times))
# [1]  9 11 14 19  0  3
Run Code Online (Sandbox Code Playgroud)

想知道是否有更快的方式(就像fastPOSIXct,但无需日期工作).

fastPOSIXct 真的很像快照,但错了.

time r hour data.table

13
推荐指数
4
解决办法
7158
查看次数

如何通过组合输入csv的两个字段/列来在logstash中生成@timestamp

我们在csv文件中有来自外部源的数据:

orderid,OrderDate,BusinessMinute,Quantity,Price
31874,01-01-2013,00:06,2,17.9
Run Code Online (Sandbox Code Playgroud)

数据date在一列和time另一列中 - 我需要通过将这两列组合在一起来生成时间戳.

我正在使用csv filterlogstash中的以下配置从文件中读取上述数据 - 这是生成自己的时间戳:

input {  
  file {
      path => "/root/data/import/Order.csv"
      start_position => "beginning"
  }
}
filter {
    csv {
        columns => ["orderid","OrderDate","BusinessMinute","Quantity","Price"]
        separator => ","
    } 
}
output {  
    elasticsearch {
        action => "index"
        host => "localhost"
        index => "demo"
        workers => 1
    }
}
Run Code Online (Sandbox Code Playgroud)

如何组合OrderDate + Business Minute作为@timestamp

csv elasticsearch logstash

13
推荐指数
1
解决办法
6124
查看次数

填写data.table缺失日期的最快方法

我正在data.table从包含日期,订单,金额等字段的CSV文件中加载.

输入文件偶尔没有所有日期的数据.例如,如下所示:

> NADayWiseOrders
           date orders  amount guests
  1: 2013-01-01     50 2272.55    149
  2: 2013-01-02      3   64.04      4
  3: 2013-01-04      1   18.81      0
  4: 2013-01-05      2   77.62      0
  5: 2013-01-07      2   35.82      2
Run Code Online (Sandbox Code Playgroud)

在上面的03年1月和6月6日没有任何条目.

想要用缺省值填充缺失的条目(例如,订单为零,金额等),或者最后一个vaue(例如,03-Jan将重用02-Jan值,06-Jan将重用05-Jan价值观等.)

使用此类默认值填充缺失日期数据缺口的最佳/最佳方法是什么?

这里的答案建议使用allow.cartesian = TRUE,并且expand.grid对于缺少工作日 - 它可能适用于工作日(因为它们只是7个工作日) - 但不确定这是否也是正确的约会方式,特别是如果我们处理多个年度数据.

datetime r data.table

8
推荐指数
3
解决办法
6932
查看次数

如何通过引用为C++ 0x传递Lambda表达式参数

我正在使用C++ 0x lambda表达式来修改地图的值.

但是,通过引用传递map迭代器有困难.

如果我只是通过迭代器,通过如下值:[](std::pair<TCHAR, int > iter)它编译得很好,但值不会在地图中更新.

如果我尝试通过引用传递迭代器,例如[](std::pair<TCHAR, int >& iter)VS2010编译器抱怨它

cannot convert paramater from 'std::pair<_Ty1,_Ty2>' to 'std::pair<_Ty1,_Ty2> &'
Run Code Online (Sandbox Code Playgroud)

这是代码.欣赏有关如何使用lambda表达式修改std :: map对象的信息.

#include <tchar.h>
#include <map>
#include <algorithm>
#include <vector>
int _tmain(int argc, _TCHAR* argv[])
{
    typedef std::map<TCHAR, int > Map;

    Map charToInt;

    charToInt[_T('a')] = 'a';
    charToInt[_T('b')] = 'b';
    charToInt[_T('c')] = 'c';
    charToInt[_T('d')] = 'd';

    std::for_each(charToInt.begin(), charToInt.end(), [](std::pair<TCHAR, int >& iter)
    {
        int& val = iter.second;
        val++;
    });

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

谢谢

c++ lambda std c++11

6
推荐指数
1
解决办法
2817
查看次数

如何为空输入(而不是默认的+ Inf和-Inf)中的Max,Min in R指定自定义返回值?

在R中,我使用Min和Max来查找给定向量的最小值和最大值.

此向量是计算和过滤的结果,通常可以是NULL或空列表.

在这种情况下,我们会收到警告,例如:

警告消息:在max(el)中:max没有非缺失参数; 返回-Inf

如果您在循环(或层)中为多个输入执行此操作,您将开始遇到大量警告

Inf的默认值不适合我的目的,并希望返回0或其他值.

现在,除了每次检查输入是否对if..else条件有效外,我是否有任何方法可以在空输入的情况下为这些Min,Max方法规定默认返回值.

  • 例如,如果您使用na.rm = TRUE,那么如果在删除NA后它将变为空,则很难预先检查输入.
  • 另一种情况是min(which()).检查返回值的(),然后再有条件地提供给MIN()是真的不是我想要的.

此外,后处理Min,Max结果以我自己的值手动删除/替换Inf并不是真正有效的方法.

那么,有没有问R返回我从最小值,最大值自己的自定义默认值空载体的任何有效的方法,而不是+ Inf文件和-Inf?

使用if..else进行预处理并使用Inf替换进行后处理并不是那么优雅.

如果在Min周围编写自定义包装器,Max是唯一的方法,您如何建议在不影响速度或优雅的情况下编写它?

r

4
推荐指数
1
解决办法
2171
查看次数

使用 data.table (R 3.1.1) 进行字符串分组(聚合)

输入:我有这个数据:

library(data.table)
ids <- c(10, 10, 10, 11, 12, 12)
items <- c('soup', 'rice', 'lemon', 'chicken', 'lamb', 'noodles')
orders <- as.data.table(list(id=ids, item=items))

> orders
   id    item
1: 10    soup
2: 10    rice
3: 10   lemon
4: 11 chicken
5: 12    lamb
6: 12 noodles
Run Code Online (Sandbox Code Playgroud)

目标:需要达到这一点(按 ID 对所有项目进行分组):

   id        items
1: 10    soup,rice,lemon
2: 11    chicken
3: 12    lamb,noodles
Run Code Online (Sandbox Code Playgroud)

我做了什么:我在 R 3.1.1(最新版本)上使用 data.table - 尝试了以下方法,它应该可以工作:

orders[,list(items=list(item)), by=id]
Run Code Online (Sandbox Code Playgroud)

但是得到以下(不正确的)输出:

   id       items
1: 10 lamb,noodles,lemon
2: 11 lamb,noodles,lemon
3: 12 …
Run Code Online (Sandbox Code Playgroud)

aggregate r data.table

4
推荐指数
1
解决办法
1622
查看次数

启动js-ipfs节点时如何启动api网关?

当使用node.js应用程序中的以下代码以编程方式启动 js-ipfs 节点时,它会启动 swarm,允许添加文件并查询它们。

// code from the docs: https://github.com/ipfs/js-ipfs#use-in-nodejs

const IPFS = require('ipfs')
const node = new IPFS()

node.on('ready', () => {
  // Ready to use!
})
Run Code Online (Sandbox Code Playgroud)

但 API 和网关不可用,这意味着 Web-ui 无法检查存储库内容。如何使用 npm 包启动 API 网关以及 ipfs swarm ipfs

ipfs

3
推荐指数
1
解决办法
1625
查看次数

标签 统计

r ×5

data.table ×4

aggregate ×1

c++ ×1

c++11 ×1

csv ×1

datetime ×1

elasticsearch ×1

hour ×1

ipfs ×1

lambda ×1

logstash ×1

std ×1

time ×1