Person {lifelogr}R Documentation

A Person object is a complete view of an individual over a certain time period, as seen through data from multiple sources

Description

Person is an object that encapsulates an individual's data over a specified date range (start and end date stored as Date objects. An individual consists of basic information, such as name, age, and gender (a list with named elements), data from their self-tracking devices such as Fitbit, Apple health, etc. (data from each source is a tibble dataframe), individual goals such as target steps (numeric), additional data from self-tracking apps or one's own collection system (stored as a tibble dataframe), and ways of grouping the data a user may be interested in, such as grouping by seasons, or comparing weekend to weekday behavior and health (stored as a list of named dataframes, which each contain group assignments).

Usage

Person

Format

An R6Class generator object

Fields

fitbit_daily

tibble dataframe of fitbit variables (for user account info provided) observed daily. Columns include:

  • date: unique for each row (date)

  • datetime: includes date and time, time is an arbitrary time, which is consistent for each day (date)

  • dateInForJavascriptLocalFormatting: chr

  • steps: total number of steps for that day (dbl)

  • distance: total distance for that day, in miles (dbl)

  • distanceKm: total distance for that day, in kilometers (dbl)

  • floors: total number of floors for that day (dbl)

  • minutesVery: minutes 'very active' that day (dbl)

  • caloriesBurned: calories (kcal) burned that day (dbl)

  • caloriesIntake: calories (kcal) consumed that day, user must input this, either into this data frame or into the fitbit (dbl)

  • restingHeartRate: resting heart rate in beats per minute (bpm) (dbl)

  • startTime: sleeping start time for that day (chr)

  • endTime: sleeping end time for that day (chr)

  • startDateTime: sleeping start date and time for that day (chr)

  • endDateTime: sleeping end date and time for that day (chr)

  • sleepDuration: sleep duration for that day, in minutes (int)

  • sleepDurationHrs: sleep duration for that day, in hours (dbl)

  • minAsleep: time asleep that day, in minutes (int)

  • minAsleepHrs: time asleep that day, in hours, derived from minAsleep (dbl)

  • minRestlessAwake: sleepDuration - awakeCount (int)

  • awakeCount: int

  • restlessCount: int

  • awakeDuration: int

  • restlessDuraton: int

  • restlessProp: proportion of sleep spent restless, calculated as restlessProp = (sleepDurationHrs - minAsleepHrs) / sleepDurationHrs * 100 (dbl)

  • sleepQualityScoreB: dbl

  • sleepQualityScoreA: int

  • sleepQualityGraphicPercentA: dbl

  • sleepQualityGraphicPercentB: dbl

  • sleepBucketTextB: one of "ok", "good", "great" (chr)

  • sleepBucketTextA: one of "ok", "good", "great" (chr)

  • clusters: list of chr

  • breaks: list of chr

fitbit_intraday

tibble dataframe of fitbit variables (for user account info provided) observed multiple times a day. Columns include:

  • date: unique for each row (date)

  • time: a combination of an arbitrary date ("1970-01-01") and the time of the observation, generally in 5 minute intervals (dttm)

  • datetime: includes date from 'date' and time from 'time' (dttm)

  • steps: number of steps in 15 minute interval (dbl)

  • distance: distance traveled in 15 minute interval, in miles (dbl)

  • distanceKm: distance traveled in 15 minute interval, in kilometers (dbl)

  • floors: number of floors went up and down in 15 minute interval (dbl)

  • activeMin: number of active minutes in 15 minute interval (dbl)

  • activityLevel: hypothesized activity level, one of: "SEDENTARY", "LIGHTLY_ACTIVE", "MODERATELY_ACTIVE", or "VERY_ACTIVE" (chr)

  • bpm: average heart rate in 5 minute interval (int)

  • confidence: one of -1, 1, 2, or 3 (int)

  • caloriesBurned: calories (kcal) burned in 5 minute interval (dbl)

  • defaultZone: chr

  • customZone: lgl

  • weight: weight, in lbs (dbl)

  • weightKg: weight, in kg (dbl)

util

tibble dataframe that maps each date in the date range to utility information about that date Columns include:

  • date: unique for each row (date)

  • datetime: date from 'date' and an arbitrary time (16:00:00) (dttm)

  • day_of_week: day of the week, with Sun as first (ord)

  • day_type: weekend or weekday (fctr)

  • month: month, with Jan as first (ord)

target_steps

the person's target number of steps (numeric) for each day (default 10,000)

start_date

start of user's date range of interest (Date object)

end_date

end of user's date range of interest (Date object)

user_info

provided user info, such as "age", "gender", "name" (list)

groupings

named list of dataframes, each with two columns - a known variable, and group, with the group assignment for observations where that variable has appropriate value

apple

tibble dataframe of user's provided Apple Health data. These columns depend on which columns are passed in by the user. However, these columns match fitbit columns:

  • datetime: dttm

  • steps: Original steps data for total number of steps in 60 minutes, but divided by 4 to match fitbit steps data, which is the total number of steps in 15 minutes (dbl)

  • distance: Average distance in 15 minutes in miles. Original distance data for total distance in 60 minutes, but divided by 4 to match fitbit distance data, which is the total distance in 15 minutes (dbl)

  • distanceKm: Average distance in 15 minutes in km. Original distance data for total distance in 60 minutes, but divided by 4 to match fitbit distance data, which is the total distance in 15 minutes (dbl)

  • floors: Average number of floors in 15 minutes. Original floors data for total number of floors in 60 minutes, but divided by 4 to match fitbit floors data, which is the total number of floors in 15 minutes(dbl)

  • bpm: average heart rate for the given hour, most users will not have this data (dbl)

addl_data

dataframe of data from another source provided by user

addl_data2

dataframe of data from another source provided by user

Methods

Person$new(fitbit_user_email, fitbit_user_pw, user_info = NA, apple_data_file, target_steps, addl_data, addl_data2, group_assignments, start_date, end_date)

Creates a new Person with specified data, and data from provided Fitbit account. If provided, start_date and end_date must be characters with " All defaults are NA - user can provide sources of data of interest.

Examples

library("lifelogr")
 
group_months <- data.frame("month" = c("Jan", "Feb", "Mar", "Apr", "May",
                                       "Jun", "Jul", "Aug",
                                       "Sep", "Oct", "Nov", "Dec"),
                                       "group" = c(0, 0, 0, 1, 1, 1, 1, 1, 
                                                   1, 0, 0, 0))
ash <- Person$new(user_info = list("name" = "Ash", "age" = 26,
                    "gender" = "female"), 
                    target_steps = 20000,
                    group_assignments = list("group_months" = group_months),
                    start_date = "2017-03-11",
                    end_date = "2017-03-12")

## Not run:                 
bailey <- Person$new(fitbit_user_email = "bailey@gmail.com",
                 fitbit_user_pw = "baileypw",
                 #apple_data_file = "apple.csv",
                 start_date = "2017-03-11",
                 end_date = "2017-03-12")
## End(Not run)
                 

[Package lifelogr version 0.1.0 Index]