actisensorlog processes SensorLog and SensorLogger exports.
The package focuses on timestamp normalization, distance calculations,
duplicate-time checks, and daily summaries.
Core entry points:
acti_process_sensorlog() for duplicate checking,
home-distance calculations, and timezone handlingacti_sensorlog_process_time() for parsing SensorLog
timestampsacti_minute_sensorlog() and
acti_summarize_sensorlog() for minute and daily
summariesYou can install actisensorlog from GitHub with:
# install.packages("remotes")
remotes::install_github("jhuwit/actisensorlog")library(actisensorlog)
sensorlog <- suppressMessages(
actiread::acti_read_sensorlog(actiread::acti_example_sensorlog_file())
)
processed_sensorlog <- acti_process_sensorlog(
sensorlog,
lat = 39.3,
lon = -76.6,
expected_timezone = "America/New_York",
check_data = FALSE
)
minute_sensorlog <- acti_minute_sensorlog(processed_sensorlog)
summary_sensorlog <- acti_summarize_sensorlog(processed_sensorlog)The SensorLog example gains distance,
distance_traveled, and is_within_home
fields:
head(processed_sensorlog)
#> # A tibble: 6 × 19
#> file time index timestamp lat lon altitude speed
#> <chr> <dttm> <dbl> <dttm> <dbl> <dbl> <dbl> <dbl>
#> 1 /var… 2025-03-11 18:44:11 1 2025-03-11 18:44:07 39.3 -76.6 46.3 -1
#> 2 /var… 2025-03-11 18:44:11 2 2025-03-11 18:44:07 39.3 -76.6 46.3 -1
#> 3 /var… 2025-03-11 18:44:11 3 2025-03-11 18:44:07 39.3 -76.6 46.3 -1
#> 4 /var… 2025-03-11 18:44:12 4 2025-03-11 18:44:07 39.3 -76.6 46.3 -1
#> 5 /var… 2025-03-11 18:44:12 5 2025-03-11 18:44:07 39.3 -76.6 46.3 -1
#> 6 /var… 2025-03-11 18:44:12 6 2025-03-11 18:44:07 39.3 -76.6 46.3 -1
#> # ℹ 11 more variables: speed_accuracy <dbl>, accel_X <dbl>, accel_Y <dbl>,
#> # accel_Z <dbl>, lat_zero <lgl>, lon_zero <lgl>, distance <dbl>,
#> # is_within_home <lgl>, distance_traveled <dbl>, timezone_estimated <chr>,
#> # char_time <chr>The minute-level view fills missing minutes between observations:
head(minute_sensorlog)
#> # A tibble: 6 × 16
#> time max_speed lat lon speed accel_X accel_Y accel_Z
#> <dttm> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 2025-03-11 18:44:00 -1 39.3 -76.6 -1 -0.0178 0.964 0.0182
#> 2 2025-03-11 18:45:00 -1 39.3 -76.6 -1 -0.0665 1.01 0.0577
#> 3 2025-03-11 18:46:00 -1 39.3 -76.6 -1 -0.0547 1.00 0.0250
#> 4 2025-03-11 18:47:00 -1 39.3 -76.6 -1 -0.0843 1.01 0.0450
#> 5 2025-03-11 18:48:00 -1 39.3 -76.6 -1 -0.0808 1.01 0.0468
#> 6 2025-03-11 18:49:00 -1 39.3 -76.6 -1 -0.0901 1.01 0.0411
#> # ℹ 8 more variables: distance <dbl>, is_within_home <lgl>,
#> # distance_traveled <dbl>, vm <dbl>, enmo <dbl>, lat_zero <lgl>,
#> # lon_zero <lgl>, in_sensorlog <lgl>The daily summary collapses the data to a single row per date:
summary_sensorlog
#> # A tibble: 1 × 11
#> date n_minutes_with_distance sum_distance max_distance
#> <date> <int> <dbl> <dbl>
#> 1 2025-03-11 12 10960. 913.
#> # ℹ 7 more variables: n_minutes_with_distance_traveled <int>,
#> # sum_distance_traveled <dbl>, mean_distance_traveled <dbl>,
#> # n_distance_traveled <int>, time_within_home <int>, time_outside_home <int>,
#> # time_missing_home <int>sensorlogger <- suppressMessages(
actiread::acti_read_sensorlogger_location(
actiread::acti_example_sensorlogger_location_file()
)
)
processed_sensorlogger <- acti_process_sensorlog(
sensorlogger,
lat = 39.3,
lon = -76.6,
expected_timezone = "America/New_York"
)
#> No duplicate combinations found of: time, seconds_elapsed, altitude, speed_accuracy, bearing_accuracy, lat, altitude_above_mean_sea_level, bearing, horizontal_accuracy, ... and 6 other variables
minute_sensorlogger <- acti_minute_sensorlog(processed_sensorlogger)
summary_sensorlogger <- acti_summarize_sensorlog(processed_sensorlogger)The packaged SensorLogger location example follows the same flow:
head(processed_sensorlogger)
#> # A tibble: 6 × 21
#> time seconds_elapsed altitude speed_accuracy bearing_accuracy
#> <dttm> <dbl> <dbl> <dbl> <dbl>
#> 1 2025-03-11 17:44:51 -6.71 7.37 -1 -1
#> 2 2025-03-11 17:44:58 0.0255 7.37 -1 -1
#> 3 2025-03-11 17:44:58 0.0322 7.37 -1 -1
#> 4 2025-03-11 17:44:58 0.0660 7.37 -1 -1
#> 5 2025-03-11 17:45:03 5.36 7.37 -1 -1
#> 6 2025-03-11 17:45:04 6.05 7.37 -1 -1
#> # ℹ 16 more variables: lat <dbl>, altitude_above_mean_sea_level <dbl>,
#> # bearing <dbl>, horizontal_accuracy <dbl>, vertical_accuracy <dbl>,
#> # lon <dbl>, speed <dbl>, lat_zero <lgl>, lon_zero <lgl>, file <chr>,
#> # cat_type_sensor <chr>, distance <dbl>, is_within_home <lgl>,
#> # distance_traveled <dbl>, timezone_estimated <chr>, char_time <chr>head(minute_sensorlogger)
#> # A tibble: 6 × 16
#> time max_speed lat lon speed accel_X accel_Y accel_Z
#> <dttm> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 2025-03-11 17:44:00 -1 39.3 -76.6 -1 NA NA NA
#> 2 2025-03-11 17:45:00 3.04 39.3 -76.6 0.265 NA NA NA
#> 3 2025-03-11 17:46:00 -1 39.3 -76.6 -1 NA NA NA
#> 4 2025-03-11 17:47:00 NA NA NA NA NA NA NA
#> 5 2025-03-11 17:48:00 -1 39.3 -76.6 -1 NA NA NA
#> 6 2025-03-11 17:49:00 -1 39.3 -76.6 -1 NA NA NA
#> # ℹ 8 more variables: distance <dbl>, is_within_home <lgl>,
#> # distance_traveled <dbl>, vm <dbl>, enmo <dbl>, lat_zero <lgl>,
#> # lon_zero <lgl>, in_sensorlog <lgl>summary_sensorlogger
#> # A tibble: 1 × 11
#> date n_minutes_with_distance sum_distance max_distance
#> <date> <int> <dbl> <dbl>
#> 1 2025-03-11 71 64169. 924.
#> # ℹ 7 more variables: n_minutes_with_distance_traveled <int>,
#> # sum_distance_traveled <dbl>, mean_distance_traveled <dbl>,
#> # n_distance_traveled <int>, time_within_home <int>, time_outside_home <int>,
#> # time_missing_home <int>