使用R data.table从包含矢量元素的列中选择

时间:2018-11-01 14:59:04

标签: r data.table

当感兴趣的列是列表(或向量),并且相对于另一列完成选择时,我可能正在尝试学习为数据表创建新列的推荐方法,并且可能会有初步选择作为链的一部分完成。

请考虑将这些数据命名为(tmp)。我们想要找到大于stimTime的sacStartT最小值(在真实数据中,其中一个或另一个可能为空,不存在最小值)。

tmp = data.table("pid" = c(14,14,9,9),"trialNumber" = c(25,26,25,26),"stimTime" = c(100,200,1,2),"sacStartT" = list(c(98,99,101,102), c(201,202), c(5), c(-2,-3,3)))

这有效:

tmp[,"mintime" := as.integer(min(unlist(sacStartT)[unlist(sacStartT)>stimTime])),by=seq_len(nrow(tmp))]

但是如果我想首先子选择数据,我不知道如何获取该行号以进行逐行分析,例如

tmp[pid == 9][,"mintime" := as.integer(min(unlist(sacStartT)[unlist(sacStartT)>stimTime])),by=seq_len(nrow(.N))]

之所以失败,是因为.N是指tmp中的行数,而不是链中的子集。

总而言之,问题是以下内容的组成:

  1. 建议进行逐行分析吗?
  2. 如何在链中为by参数找到正确的数字?
  3. 处理包含列表的data.table元素的建议?您是否只需要手动将所有列表都不列出?

0 个答案:

没有答案