在 R 中,如何根据一列中的重复值保留行的第一次出现?

杰拉德·莫里森

我想保留列中第一次出现更改值的行(下例中的最后一列)。我的数据框是一个 xts 对象。

在下面的示例中,我将在最后一列中保留第一行,但不保留接下来的两行,因为它们与前 2 行相比没有变化。然后我将保留接下来的三行(序列 323),因为它们发生了变化每次,并删除接下来的 4 个,因为它们没有改变,依此类推。最终的数据框看起来比原始数据框更小。

任何帮助表示赞赏!

原始数据框

2007-01-31 2.72   4.75        2
2007-02-28 2.82   4.75        2
2007-03-31 2.85   4.75        2
2007-04-30 2.74   4.75        3
2007-05-31 2.46   4.75        2
2007-06-30 2.98   4.75        3
2007-07-31 4.19   4.75        3
2007-08-31 4.55   4.75        3
2007-09-30 4.20   4.75        3
2007-10-31 4.36   4.75        3
2007-11-30 5.75   4.76        4
2007-12-31 5.92   4.76        4
2008-01-31 6.95   4.87        4
2008-02-29 7.67   4.87        4
2008-03-31 8.21   4.90        4
2008-04-30 6.86   4.91        1
2008-05-31 6.53   5.07        1
2008-06-30 7.35   5.08        1
2008-07-31 8.00   5.13        4
2008-08-31 8.36   5.19        4

最终数据框

2007-01-31 2.72   4.75        2
2007-04-30 2.74   4.75        3
2007-05-31 2.46   4.75        2
2007-06-30 2.98   4.75        3
2007-11-30 5.75   4.76        4
2008-04-30 6.86   4.91        1
2008-07-31 8.00   5.13        4
浪塘

您可以使用data.table::shift过滤器,加上第一行,在rbind

library(data.table)
rbind(setDT(dt)[1],dt[v3!=shift(v3)])

或使用的等效方法dplyr

library(dplyr)
bind_rows(dt[1,], filter(dt, v3!=lag(v3)))

输出:

         date    v1    v2    v3
       <IDat> <num> <num> <int>
1: 2007-01-31  2.72  4.75     2
2: 2007-04-30  2.74  4.75     3
3: 2007-05-31  2.46  4.75     2
4: 2007-06-30  2.98  4.75     3
5: 2007-11-30  5.75  4.76     4
6: 2008-04-30  6.86  4.91     1
7: 2008-07-31  8.00  5.13     4

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

保持字符串直到R中第一次出现模式

根据R中的一列中的值删除几乎重复的行

第一次标记基于参数的记录出现在r数据框中

从R中每个组的第一次超过阈值的列中获取值

R-如何根据第一行中的值合并数据框中的列

在R中:如何每天根据某一列中的最大值聚合整个行?

如果在另一列中具有相同的值,则仅保留第一次出现的重复列值

在维护行的列中第一次出现后替换重复的值

R-抓取刷新点后第一次出现的值的索引?

根据R中第一列的重复行进行重塑

R-Dplyr-get()不适用于每一列,仅使用第一次出现

根据另一列R中的出现选择行

使用R选择在第一次出现固定值时的行条件

使用R中的匹配函数查找“第一次出现”

在 R 数据框中查找第一次和最后一次出现的项目

检测 R 中两个变量之间的第一次出现

根据 R 中另一列中的值替换一列中第二次出现的字符串

在 R 中,从第二列的第一次出现更改数据框列

根据 R 中的单独列标记列中值的第一次连续出现

使用 R 根据另一列中事件的第一次出现创建开始时间和结束时间列

R:一次根据一列中的条件将整行推到 NA

VBA:根据列中第一次出现的值删除excel行

在 R 中,如何找到矩阵中某个值第一次出现和最后一次出现的行号?

如何在R中第一次出现逗号之前删除所有内容

使用 SQL Server 获取列中第一次出现重复值的行

如何使用R中的正则表达式提取字符第一次和第二次出现之间的部分?

如何在 R 数据框中添加变量第一次和最后一次出现的列?

R 在第一次出现后用纵向数据中的观察值填充所有观察值

仅在 R 中每个 id 的列值第一次按行更改时标记