R:合并2个数据帧,并在前一行和后一行进行索引

Hachondeoro

可以说我有一个像这样的数据集:

origin=data.frame(Date=as.Date(c("2016-08-05","2016-08-04","2016-08-03")),
                  L=c(1,2,3),
                  Type=c("H","L","H"))

        Date L Type
1 2016-08-05 1    H
2 2016-08-04 2    L
3 2016-08-03 3    H

end=data.frame(Date=as.Date(c("2016-08-05","2016-08-04","2016-08-03","2016-08-02","2016-08-01")),
               N=c(50,40,30,20,10),
               Name=c("CA","CB","CC","CD","CE"),
               Vol=c(2,1,2,2,3),
               Act=c(0.1,0.2,0.3,0.2,0.2))

        Date  N Name Vol Act
1 2016-08-05 50   CA   2 0.1
2 2016-08-04 40   CB   1 0.2
3 2016-08-03 30   CC   2 0.3
4 2016-08-02 20   CD   2 0.2
5 2016-08-01 10   CE   3 0.2

我想要这样的东西:

        Date L Type  N Name Vol Act
3 2016-08-05 1    H 50   CA   2 0.1
3 2016-08-05 1    H 40   CB   1 0.2
3 2016-08-05 1    H 30   CC   2 0.3
2 2016-08-04 2    L 40   CB   1 0.2
2 2016-08-04 2    L 30   CC   2 0.3
2 2016-08-04 2    L 20   CD   2 0.2
1 2016-08-03 3    H 30   CC   2 0.3
1 2016-08-03 3    H 20   CD   2 0.2
1 2016-08-03 3    H 10   CE   3 0.2

我想保留“起源”的原始列日期,在合并中,我想将其与“结束”的当前日期和以前的日期值(两个先前的值)合并,就像用循环合并一样。在其他帖子中,仅匹配公共值,这将给出3行结果:

merge(x = origin, y = end, by = "Date")

        Date L Type  N Name Vol Act
1 2016-08-03 3    H 30   CC   2 0.3
2 2016-08-04 2    L 40   CB   1 0.2
3 2016-08-05 1    H 50   CA   2 0.1

这是非常不同的,并且不会按当前行值和上一行值合并两个数据帧,因此我无法弄清楚该如何进行。

智慧

看起来像是foverlapsdata.table对这份工作西装:

# prepare data and add extra columns for foverlaps join which relies on columns instead of one
library(data.table)
setDT(origin)[, DateStart := Date - 2]
setDT(end)[, DateStart := Date]
setkey(origin, DateStart, Date)

# join two tables with foverlaps and remove subsidiary columns
foverlaps(end, origin, type = "within")[, `:=` (DateStart = NULL, i.Date = NULL, i.DateStart = NULL)][order(Date)]

#          Date L Type  N Name Vol Act
# 1: 2016-08-03 3    H 30   CC   2 0.3
# 2: 2016-08-03 3    H 20   CD   2 0.2
# 3: 2016-08-03 3    H 10   CE   3 0.2
# 4: 2016-08-04 2    L 40   CB   1 0.2
# 5: 2016-08-04 2    L 30   CC   2 0.3
# 6: 2016-08-04 2    L 20   CD   2 0.2
# 7: 2016-08-05 1    H 50   CA   2 0.1
# 8: 2016-08-05 1    H 40   CB   1 0.2
# 9: 2016-08-05 1    H 30   CC   2 0.3

或使用version的non-equi加入功能data.table1.9.7

setDT(origin)[, `:=` (DateEnd = Date, StartDate = Date - 2)]
             [setDT(end), on = .(DateEnd >= Date, StartDate <= Date), allow = T]

#          Date L Type    DateEnd  StartDate  N Name Vol Act
# 1: 2016-08-05 1    H 2016-08-05 2016-08-05 50   CA   2 0.1
# 2: 2016-08-04 2    L 2016-08-04 2016-08-04 40   CB   1 0.2
# 3: 2016-08-05 1    H 2016-08-04 2016-08-04 40   CB   1 0.2
# 4: 2016-08-03 3    H 2016-08-03 2016-08-03 30   CC   2 0.3
# 5: 2016-08-04 2    L 2016-08-03 2016-08-03 30   CC   2 0.3
# 6: 2016-08-05 1    H 2016-08-03 2016-08-03 30   CC   2 0.3
# 7: 2016-08-03 3    H 2016-08-02 2016-08-02 20   CD   2 0.2
# 8: 2016-08-04 2    L 2016-08-02 2016-08-02 20   CD   2 0.2
# 9: 2016-08-03 3    H 2016-08-01 2016-08-01 10   CE   3 0.2

删除辅助列应该很简单。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R:合并2个数据帧,并在前一行和后一行进行索引

来自分类Dev

在R中,对两个匹配数据帧的每一行进行排序

来自分类Dev

如何将数据帧1的每一行与数据帧2的每一行进行比较?

来自分类Dev

如何将数据帧1的每一行与数据帧2的每一行进行比较?

来自分类Dev

如何根据行的排序值对pandas数据帧的每一行进行排序并返回列索引

来自分类Dev

Python Pandas合并两个数据帧,并将一个数据帧的一行映射到另一数据帧的所有行

来自分类Dev

如何将一个数据帧中的一行的值与另一个数据帧中的多个行进行比较(包括计算)

来自分类Dev

在R中打印合并数据帧的每一行

来自分类Dev

将一个数据框的一行与其他数据框的行进行比较?

来自分类Dev

将2个substr和1个strpos合并在一行php中

来自分类Dev

合并两个R数据帧并标识每一行的源

来自分类Dev

在另一个数据帧中计算一行熊猫数据帧

来自分类Dev

有条件地对数据帧的每一行进行计数

来自分类Dev

如何在python中对pandas数据帧的每一行进行计算?

来自分类Dev

比较两个数据帧并在pyspark中返回一行的结果

来自分类Dev

如何对熊猫数据框中的每一行进行排序并获取索引?

来自分类Dev

查找一个数据帧中的一行出现在R中的另一个数据帧中的时间

来自分类Dev

ggplot2和一行中的第一个数据点

来自分类Dev

awk 或 sed:如何根据上一行和下一行进行修改

来自分类Dev

如何将一个数据帧的一行的EACH值与另一数据帧的一行的所有值相乘

来自分类Dev

在R中,拆分数据帧,以便子集数据帧包含先前数据帧的最后一行和后续数据帧的第一行

来自分类Dev

如何与R中的下一行进行计算和比较

来自分类Dev

使用2个定界符对一行进行爆炸

来自分类Dev

检查数据帧的每一行是否包含在另一个数据帧中

来自分类Dev

如何将数据帧附加到另一个数据帧的每一行?

来自分类Dev

计算一个数据帧的每一行与另一个数据帧中的所有其他行之间的欧式距离

来自分类Dev

R为每一行计算并添加两个数据帧单元的增量

来自分类Dev

删除每个.txt文件的最后一行,并在R中导入/合并数据

来自分类Dev

如何提取数据帧的每一行并将解析的字符串从另一个数据帧添加到R中第一个数据帧的列

Related 相关文章

  1. 1

    R:合并2个数据帧,并在前一行和后一行进行索引

  2. 2

    在R中,对两个匹配数据帧的每一行进行排序

  3. 3

    如何将数据帧1的每一行与数据帧2的每一行进行比较?

  4. 4

    如何将数据帧1的每一行与数据帧2的每一行进行比较?

  5. 5

    如何根据行的排序值对pandas数据帧的每一行进行排序并返回列索引

  6. 6

    Python Pandas合并两个数据帧,并将一个数据帧的一行映射到另一数据帧的所有行

  7. 7

    如何将一个数据帧中的一行的值与另一个数据帧中的多个行进行比较(包括计算)

  8. 8

    在R中打印合并数据帧的每一行

  9. 9

    将一个数据框的一行与其他数据框的行进行比较?

  10. 10

    将2个substr和1个strpos合并在一行php中

  11. 11

    合并两个R数据帧并标识每一行的源

  12. 12

    在另一个数据帧中计算一行熊猫数据帧

  13. 13

    有条件地对数据帧的每一行进行计数

  14. 14

    如何在python中对pandas数据帧的每一行进行计算?

  15. 15

    比较两个数据帧并在pyspark中返回一行的结果

  16. 16

    如何对熊猫数据框中的每一行进行排序并获取索引?

  17. 17

    查找一个数据帧中的一行出现在R中的另一个数据帧中的时间

  18. 18

    ggplot2和一行中的第一个数据点

  19. 19

    awk 或 sed:如何根据上一行和下一行进行修改

  20. 20

    如何将一个数据帧的一行的EACH值与另一数据帧的一行的所有值相乘

  21. 21

    在R中,拆分数据帧,以便子集数据帧包含先前数据帧的最后一行和后续数据帧的第一行

  22. 22

    如何与R中的下一行进行计算和比较

  23. 23

    使用2个定界符对一行进行爆炸

  24. 24

    检查数据帧的每一行是否包含在另一个数据帧中

  25. 25

    如何将数据帧附加到另一个数据帧的每一行?

  26. 26

    计算一个数据帧的每一行与另一个数据帧中的所有其他行之间的欧式距离

  27. 27

    R为每一行计算并添加两个数据帧单元的增量

  28. 28

    删除每个.txt文件的最后一行,并在R中导入/合并数据

  29. 29

    如何提取数据帧的每一行并将解析的字符串从另一个数据帧添加到R中第一个数据帧的列

热门标签

归档