多个第一个和最后一个非NA值(按组)

安沙尔

我有以下data.table:

require(data.table)
dt = data.table(
  id = c(rep('Grp 1', 31), rep('Grp 2', 31)),
  date = rep(as.IDate(as.IDate('2020-01-01') : as.IDate('2020-01-31')), 2),
  change = c(rep(NA, 5), rep('yes', 5), rep(NA, 10), rep('yes', 3), rep(NA, 8),
             rep(NA, 2), rep('yes', 8), rep(NA, 8), rep('yes', 5), rep(NA, 8))
)

对于每一个组id我要过滤的第一和最后date一个系列,它是由第二个塔限定小号changeyes(即非NA)。我可以执行以下操作,这将按组为我提供第一个和最后一个非NA行。但是,问题在于每个组不止一次发生该系列。

dt[ !is.na(change),
    .(head(date, 1),
      tail(date, 1)),
    .(id) ]

这些是我想要过滤的行索引:

dt[c(6,10,21,23,34,41,50,54)]
ekoam

一种方法是为由idchange组合标识的每个条纹赋予唯一的组ID 我们可以rleid用来生成这种游程类型的id。考虑这样的事情

dt[,
   gid := rleid(id, change)
][!is.na(change),
  as.list(range(date)),
  by = .(id, gid)
][, 
  gid := NULL
]

请注意,我还假设您需要日期范围,而不是真正的第一个和最后一个元素。如果日期不是按时间顺序排列,则您的方法将失败。输出看起来像这样

      id         V1         V2
1: Grp 1 2020-01-06 2020-01-10
2: Grp 1 2020-01-21 2020-01-23
3: Grp 2 2020-01-03 2020-01-10
4: Grp 2 2020-01-19 2020-01-23

rleid 像这样

> rleid(c(1, 1, 2, 3, 3), c("a", "b", "b", "d", "d"))
[1] 1 2 3 4 4

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按组查找第一个和最后一个NA值的全局索引

来自分类Dev

按组查找某个值之后的第一个非NA值

来自分类Dev

按组标识和输出第一个和最后一个记录

来自分类Dev

按组查找第一个/最后一个观察值?

来自分类Dev

R:data.table,将组的第一个和最后一个值设置为NA

来自分类Dev

返回每列R的第一个和最后一个非NA值的年份

来自分类Dev

Excel公式获取第一个和最后一个非零值

来自分类Dev

如何从变量中获取第一个和最后一个非Inf,非NaN,非NA,非0值?

来自分类Dev

sas按组将最后一个值更改为第一个值

来自分类Dev

R:按组逐列查找data.table中的第一个非NA观测值

来自分类Dev

如何按因子为第一个非 NA 组创建新列?

来自分类Dev

如何在多个csv文件中一次按行查找(并输出)第一个值1和最后一个值1的位置?

来自分类Dev

SSRS如何获取矩阵行组的第一个和最后一个值?

来自分类Dev

通过查询选择组中列的第一个和最后一个值

来自分类Dev

R:识别重复组中的第一个和最后一个元素

来自分类Dev

在Pandas DataFrame中找到第一个和最后一个非NaN值

来自分类Dev

按行选择第一个非NA值

来自分类Dev

缩短用于填充多个列表的第一个和最后一个值的for循环

来自分类Dev

定位第一个和最后一个非溢出元素

来自分类Dev

熊猫将组分为第一个值和最后一个值

来自分类Dev

计算第一个和最后一个出现的数字之间的NA

来自分类Dev

如何从list <string>获取第一个和最后一个值?

来自分类Dev

获取groupby中的第一个和最后一个值

来自分类Dev

删除第一个和最后一个出现列值的行

来自分类Dev

删除相同的值,但第一个和最后一个除外

来自分类Dev

选择数据集中的第一个,最后一个和单个观测值

来自分类Dev

获取区域包围的第一个和最后一个值的索引

来自分类Dev

更改PHP行的第一个和最后一个值

来自分类Dev

返回数组中的第一个和最后一个值

Related 相关文章

  1. 1

    按组查找第一个和最后一个NA值的全局索引

  2. 2

    按组查找某个值之后的第一个非NA值

  3. 3

    按组标识和输出第一个和最后一个记录

  4. 4

    按组查找第一个/最后一个观察值?

  5. 5

    R:data.table,将组的第一个和最后一个值设置为NA

  6. 6

    返回每列R的第一个和最后一个非NA值的年份

  7. 7

    Excel公式获取第一个和最后一个非零值

  8. 8

    如何从变量中获取第一个和最后一个非Inf,非NaN,非NA,非0值?

  9. 9

    sas按组将最后一个值更改为第一个值

  10. 10

    R:按组逐列查找data.table中的第一个非NA观测值

  11. 11

    如何按因子为第一个非 NA 组创建新列?

  12. 12

    如何在多个csv文件中一次按行查找(并输出)第一个值1和最后一个值1的位置?

  13. 13

    SSRS如何获取矩阵行组的第一个和最后一个值?

  14. 14

    通过查询选择组中列的第一个和最后一个值

  15. 15

    R:识别重复组中的第一个和最后一个元素

  16. 16

    在Pandas DataFrame中找到第一个和最后一个非NaN值

  17. 17

    按行选择第一个非NA值

  18. 18

    缩短用于填充多个列表的第一个和最后一个值的for循环

  19. 19

    定位第一个和最后一个非溢出元素

  20. 20

    熊猫将组分为第一个值和最后一个值

  21. 21

    计算第一个和最后一个出现的数字之间的NA

  22. 22

    如何从list <string>获取第一个和最后一个值?

  23. 23

    获取groupby中的第一个和最后一个值

  24. 24

    删除第一个和最后一个出现列值的行

  25. 25

    删除相同的值,但第一个和最后一个除外

  26. 26

    选择数据集中的第一个,最后一个和单个观测值

  27. 27

    获取区域包围的第一个和最后一个值的索引

  28. 28

    更改PHP行的第一个和最后一个值

  29. 29

    返回数组中的第一个和最后一个值

热门标签

归档