如何识别R df中缺少的行 - 没有NA

时间:2017-05-22 19:45:49

标签: r sorting

我有几个不同长度的观察结果。应该每0.2米深度收集一次观察结果。这通常是这种情况,但有时1,2或更多深度间隔以完全随机的顺序被“遗漏/跳过”。表格具有相同的字段。我需要知道错过了哪个深度,以及在哪个时间。作为一个例子是一个简化的文件;表A(profile,time_UTC,depth_m)。表A有12行,但应该有15行,即0.4米,1.2米和1.4米。时间戳(ms)是不规则的,所以我不能用它们来识别深度差距。

==============

  1. 表A
  2. 有12行,但应该有15行:

     profil time_UTC depth_m
    1 V      24871     0.2
    2 V      24877     0.6
    3 V      24882     0.8
    4 V      24887      1
    5 V      24898     1.6
    6 V      24901     1.8
    7 V      24902      2
    8 V      24905     2.2
    9 V      24907     2.4
    10 V     24909     2.6
    11 V     24912     2.8
    12 V     24915      3
    
  3. 对于我将要阅读的所有df,需要以可操作的方式进行检查。

    我需要帮助来编写一个查询,在那里我可以找到缺少的行并添加缺少深度和集成时间的新行。

    我为类似问题提供了两个链接,但在R示例中,序列是分类的(我的df不是),另一个是Sql代码。 R identify missing rows from pre-specified sequence How to find missing rows?

    感谢您的帮助。

1 个答案:

答案 0 :(得分:0)


library(dplyr)

right_join(df, data_frame(depth_m = seq(0.2, 3, by = 0.2)))
#> Joining, by = "depth_m"
#>    profil time_UTC depth_m
#> 1       V    24871     0.2
#> 2    <NA>       NA     0.4
#> 3    <NA>       NA     0.6
#> 4       V    24882     0.8
#> 5       V    24887     1.0
#> 6    <NA>       NA     1.2
#> 7    <NA>       NA     1.4
#> 8       V    24898     1.6
#> 9       V    24901     1.8
#> 10      V    24902     2.0
#> 11      V    24905     2.2
#> 12   <NA>       NA     2.4
#> 13   <NA>       NA     2.6
#> 14   <NA>       NA     2.8
#> 15      V    24915     3.0