import_mhealth_csv_chunked imports the raw multi-channel accelerometer data stored in mHealth Specification in chunks.

import_mhealth_csv_chunked(filepath, chunk_samples = 180000)

Arguments

filepath

string. The filepath of the input data.

chunk_samples

number. The number of samples in each chunk. Default is 180000, which is half hour data for 100 Hz sampling rate.

Value

list. The list contains two items. The first item is a generator function that each time it is called, it will return a dataframe with at most chunk_samples samples of imported data. The third item is a close_connection function which you can call at any moment to close the file loading.

How is it used in MIMS-unit algorithm?

This function is a File IO function that is used to import data stored in mHealth Specification during algorithm validation.

See also

Examples

default_ops = options() options(digits.secs=3) # Use the mhealth csv file shipped with the package filepath = system.file('extdata', 'mhealth.csv', package='MIMSunit') # Example 1 # Load chunks every 1000 samples results = import_mhealth_csv_chunked(filepath, chunk_samples=100) next_chunk = results[[1]] close_connection = results[[2]] # Check data as chunks, you can see chunk time is shifting forward at each iteration. n = 1 repeat { df = next_chunk() if (nrow(df) > 0) { print(paste('chunk', n)) print(paste("df:", df[1, 1], '-', df[nrow(df),1])) n = n + 1 } else { break } }
#> [1] "chunk 1" #> [1] "df: 2017-03-16 12:25:50.000 - 2017-03-16 12:25:51.237" #> [1] "chunk 2" #> [1] "df: 2017-03-16 12:25:51.263 - 2017-03-16 12:25:52.500" #> [1] "chunk 3" #> [1] "df: 2017-03-16 12:25:52.525 - 2017-03-16 12:25:53.763" #> [1] "chunk 4" #> [1] "df: 2017-03-16 12:25:53.787 - 2017-03-16 12:25:55.025" #> [1] "chunk 5" #> [1] "df: 2017-03-16 12:25:55.050 - 2017-03-16 12:25:55.987"
# Close connection after reading all the data close_connection() # Example 2: close loading early results = import_mhealth_csv_chunked(filepath, chunk_samples=1000) next_chunk = results[[1]] close_connection = results[[2]] # Check data as chunks, you can see chunk time is shifting forward at each iteration. n = 1 repeat { df = next_chunk() if (nrow(df) > 0) { print(paste('chunk', n)) print(paste("df:", df[1, 1], '-', df[nrow(df),1])) n = n + 1 close_connection() } else { break } }
#> [1] "chunk 1" #> [1] "df: 2017-03-16 12:25:50.000 - 2017-03-16 12:25:55.987"
# Restore default options options(default_ops)