dplyr:按组查找第一个非零元素和最后一个非零元素和修剪向量

克里斯新公司

我对这篇文章有一个类似的问题(如何找到第一个非零元素和最后一个非零元素和 TRIM 向量

但我正在寻找 dplyr 解决方案,因为我想包括一个

 d %>% 
  group_by(id) %>%

另外声明。

我有一个数据框:

d<-data.frame(time = factor(c("00:00","00:15","00:30","00:45", "01:00","01:15","01:30","01:45","02:00","02:40" )), q=c(0,0,100,0,0,100,0,0,0,0),p=c(.25,.25,.25,.25,.25,.25,.25,.25,.25,.25))
d
    time   q    p
1  00:00   0 0.25
2  00:15   0 0.25
3  00:30 100 0.25
4  00:45   0 0.25
5  01:00   0 0.25
6  01:15 100 0.25
7  01:30   0 0.25
8  01:45   0 0.25
9  02:00   0 0.25
10 02:40   0 0.25

我想消除列“q”的第一个非零索引之前和列“q”的最后一个非零索引之后的数据框行。在上述情况下,结果应如下所示:

  00:30 100 0.25
  00:45   0 0.25
  01:00   0 0.25
  01:15 100 0.25

@akrun 给出了这个问题的解决方案:

 indx <- which(d$q!=0)
 d[indx[1L]:indx[length(indx)],]

这有效,但我正在寻找 dplyr 解决方案,因为我想跨多个组执行此计算。

tmfmk

一种选择可能是:

d %>%
 filter(row_number() %in% Reduce(`:`, which(q != 0)))

   time   q    p
1 00:30 100 0.25
2 00:45   0 0.25
3 01:00   0 0.25
4 01:15 100 0.25

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何找到第一个非零元素和最后一个非零元素并修剪它

在熊猫组中查找第一个非零元素

R:如何按组查找数据框中的第一个非零元素

识别熊猫组中的第一个非零元素

查找从列底部开始的第一个非零元素的索引

每行的第一个非零元素

从向量中擦除所有元素,直到第一个非零元素C ++

Python-查找每个元素左侧第一个非零元素的索引

识别由熊猫中的多个列组成的组中的第一个非零元素

R-在data.table中查找第一个非零元素的索引

将每行的最后一个非零元素设置为零-NumPy

Scala:从第一个非零元素中切出一个列表

返回列表中最后一个非零元素的索引

如何获得最后一个非零元素的位置

返回r中的最后一个非零元素索引

在std :: vector中找到最后一个非零元素

更改列中第一个非零元素上方的数组值

用熊猫标记每列中的第一个非零元素

查找最后一个非零元素3D数组-numpy数组

为每组查找列中的最后一个非零元素,填充不同的列

查找第一个零元素而忽略numpy数组中的前导零

在矩阵的每一行仅生成一个非零元素

R:随机采样向量中的一个非零元素,并用0替换其他元素

如何获取一个numpy数组的非零元素的数量?

用数组中的下一个非零元素替换0

如何找到至少包含一个非零元素的列的索引?

如何产生一个包含非零元素索引的张量?

一种返回Perl中最后一个非零元素的索引的优雅方法?

从右到第一个非零元素出现之前,我如何计算具有零值的连续列数