@@ -22,11 +22,27 @@ as.vpts <- function(data) {
22
22
height <- datetime <- source_file <- radar <- NULL
23
23
24
24
# Throw error if nrows per height are not identical
25
-
26
- assertthat :: assert_that(
27
- remainder_is_zero(dim(data )[1 ], length(unique(data $ height ))) > 0 ,
28
- msg = " Number of rows per height variable must be identical"
29
- )
25
+ # FIXME: first if statement is a weak check that could fail, could be improved.
26
+ if (! remainder_is_zero(dim(data )[1 ], length(unique(data $ height )))){
27
+ data %> %
28
+ dplyr :: group_by(radar , datetime ) %> %
29
+ dplyr :: mutate(bioRad_internal_interval = height - lag(height )) %> %
30
+ dplyr :: add_count(name = " bioRad_internal_levels" ) - > data
31
+ interval_median <- median(data $ bioRad_internal_interval , na.rm = TRUE )
32
+ interval_unique <- unique(data $ bioRad_internal_interval )
33
+ interval_unique <- interval_unique [! is.na(interval_unique )]
34
+ if (length(bin_unique )> 1 ){
35
+ warning(paste(" profiles found with different altitude interval:" ,paste(sort(bin_unique ),collapse = " " )), " , retaining " ,bin_median , " only." )
36
+ data <- dplyr :: filter(data , bioRad_internal_interval == interval_median )
37
+ }
38
+ levels_median <- median(data $ bioRad_internal_levels )
39
+ levels_unique <- unique(data $ bioRad_internal_levels )
40
+ if (length(levels_unique )> 1 ){
41
+ warning(paste(" profiles found with different number of height layers:" ,paste(sort(levels_unique ),collapse = " " )), " , retaining " ,levels_median , " only." )
42
+ data <- dplyr :: filter(data , bioRad_internal_levels == levels_median )
43
+ }
44
+ data <- dplyr :: select(data , - c(bioRad_internal_interval , bioRad_internal_levels ))
45
+ }
30
46
31
47
radar <- unique(data [[" radar" ]])
32
48
0 commit comments