目标:把fitbit的每日运动记录导入到R语言中进行分析,画出统计图表来

已有原始数据:fitbit2014年每日的记录电子表格文件,全部数据点此下载,示例如下:

日期 消耗卡路里数 距离 攀爬楼层数 久坐不动的分钟数 不太活跃分钟数 中度活跃分钟数 非常活跃分钟数
2014年4月27日 2736 16581 11.84 7 1111 131 117 81
2014年4月28日 2514 12622 9.01 6 910 136 59 76
2014年4月29日 2231 8357 5.97 9 1208 129 76 27
2014年4月30日 2247 7959 5.68 9 1196 137 83 24
2014年5月1日 2563 13014 9.29 21 1107 156 131 46
2014年5月2日 2376 10010 7.15 17 1147 164 99 30
2014年5月3日 2553 13002 9.28 25 1119 151 120 50
2014年5月4日 2370 10090 7.23 19 1173 147 82 38

1)转换xls为csv

首先要把xls电子表格导入,这里用最简单的办法,首先将xls另存为csv文件。为了输入命令方便,把列名都改为了英文。

2)将csv复制到工作目录中,或设置自己的工作目录,以让R环境可以找到相应的文件

将csv放在工作目录下,也可以用setwd("c:/myfitbit")设置自己的工作目录

3)导入csv文件到数据框

fitbit <- read.table("fitbit.csv", header=TRUE, sep=",", row.names="date")

也可以直接调用read.csv()函数,可以少填几个参数选项

4)看看数据的概貌

summary(fitbit)

可以看出每列数据的最小、最大、平均值、中位数等统计信息。

ka step dist floor
Min. :2031 Min. : 0 Min. : 0.000 Min. : 0.00
1st Qu.:2290 1st Qu.: 8593 1st Qu.: 6.135 1st Qu.: 11.00
Median :2408 Median :10515 Median : 7.570 Median : 16.00
Mean :2432 Mean :10152 Mean : 7.274 Mean : 17.35
3rd Qu.:2547 3rd Qu.:12665 3rd Qu.: 9.120 3rd Qu.: 20.00
Max. :3360 Max. :25779 Max. :18.410 Max. :165.00
sit inactive move active
Min. : 829 Min. : 0.0 Min. : 0.00 Min. : 0.00
1st Qu.:1119 1st Qu.:126.0 1st Qu.: 75.00 1st Qu.: 18.50
Median :1159 Median :146.0 Median : 93.00 Median : 37.00
Mean :1170 Mean :137.3 Mean : 91.89 Mean : 37.26
3rd Qu.:1188 3rd Qu.:163.0 3rd Qu.:113.00 3rd Qu.: 51.00
Max. :1440 Max. :238.0 Max. :222.00 Max. :137.00

5)看看数据框的结构,即各列分别是什么类型?

用str函数,str是structure单词的缩写。

str(fitbit)

'data.frame': 243 obs. of 8 variables:
$ ka : num 2496 2513 2228 2336 2508 ...
$ step : num 12803 12955 8768 8971 12078 ...
$ dist : num 9.14 9.47 6.31 6.41 9.05 ...
$ floor : int 15 12 16 16 8 20 12 13 13 13 ...
$ sit : num 1161 1188 1234 1140 1153 ...
$ inactive: int 123 112 97 174 130 177 156 121 126 123 ...
$ move : int 98 67 72 113 108 141 99 118 65 73 ...
$ active : int 58 73 37 13 49 61 40 37 47 56 ...

6)画出每天步数的统计图

plot(fitbit$step)

要取出某列,可以用$符号。

如果每次都写上fitbit$太麻烦,就可以用attach(fitbit)把这个数据框的搜索路径加上,这样以后就可以输入step来表示fitbit$step了。

与attach()相对的是detach()函数,为了避免编程错误,最好成对出现。

7)看看走的步数与公里数有什么关系?

plot(setp, dist)

可以看出fitbit实际上就是一个非常简单的算法把步数换算为公里数,什么高级计算也没有。

8)给图加上标题

title("fitbit统计图")

9)用命令的方式将图形输出到jpeg文件中

jpeg("a.jpg") #将绘图送到jpeg图形文件中

plot(step, dist)

title("fitbit统计图")

dev.off() #最后要关闭设备

其它命令:dev.new()可以打开一个新的绘图窗口。dev.next(), dev.prev(), dev.set()...

当然在R交互环境中的图形上点右键,或用R环境的菜单功能,可以随便复制和输出图形。

看看步数的统计分布图

hist(step)

平均下来每天超过1万步,有些记录在fitbit同步时丢失,所以有20多天走了零步。

显示日期

日期是以"2014年10月28日"这样的字符串格式记录的,默认是不转换为日期型的,需要用as.Date函数转换一下。

month <- as.Date(row.names(fitbit), "%Y年%m月%d日")
plot(month, step)

这时可以看到水平轴已经显示的是日期了。

只统计某个月份的数据

如果只统计9月份的数据,需要用到日期处理的函数。

monthData <- fitbit[as.double(format(fitbit$date, "%m"))==9, ]

自动生成统计图并保存为文件

现在要自动生成fitbit的10月的统计图,并保存为文件fitbit_month_10.jpg。

m <- 10

jpeg(paste0("fitbit_month_", m, ".jpg"))

monthData <- fitbit[as.double(format(fitbit$date, "%m"))==m, ]

plot(format(monthData$date,"%d"), monthData$step, type="l", xlab="date", ylab="steps", main=paste("2014年",m,"月步数统计图",sep=""))

dev.off()

分组统计每个月的平均步数

meanMonthStep <- aggregate(fitbit$step, by=list(format(fitbit$date,"%m")), mean)

plot(meanMonthStep,type="b",main="月平均步数", xlab="month", ylab="step")

由于4、5月份的数据同步有故障,丢失了部分数据,所以平均步数偏低。

后来发现用tapply函数也可以得到同样的结果:

monthStep <- tapply(fitbit$step, format(fitbit$date,"%m"), mean)

实际上tapply将向量分割为组,然后对每组应用指定的函数。

显示一条平滑曲线

plot(fitbit$date, fitbit$step, type="l")

lines(lowess(fitbit$date, fitbit$step),col="blue")

identify()误别图上的点

plot(fitbit$date,fitbit$step,type="p", pch=16,ylim=c(0,30000))

identify(fitbit$date,fitbit$step)

鼠标在图形上点击,可以得到点的序号。我这里找了步数最少的两天,还有走得最多的一天。

查了一下为什么那两天走得最少?很可能忘了带计步器!

fitbit[c(96,182,269),c("date","step")]

date  step

96  2014-04-06  2285

182 2014-07-24 25779

269 2014-10-19  1633

下面的代码把12个月的图画到一个PDF文件中。

fitbit <- read.csv("fitbit2014.csv")
# 一定要转换为日期类型
fitbit$date <- as.Date(fitbit$date) PlotMonthGraph <- function(m)
{
monthData <- fitbit[as.double(format(fitbit$date, "%m"))==m, ]
plot(format(monthData$date,"%d"), monthData$step, type="l", ylim=c(,), xlab="日期", ylab="步数", main=paste("2014年", m, "月",sep=""))
} pdf("fitbit2014年计步数据统计图.pdf", family='GB1')
par(mfrow=c(,)) #4行,3列
for(i in :) PlotMonthGraph(i)
dev.off() par(mfrow=c(,))
png("全年步数统计图.png")
plot(fitbit$date, fitbit$step, type="l", xlab="date", ylab="steps", main="2014年全年步数统计图")
dev.off()

用R语言分析我的fitbit计步数据的更多相关文章

  1. R语言分析朝阳医院数据

    R语言分析朝阳医院数据 本次实践通过分析朝阳医院2016年销售数据,得出“月均消费次数”.“月均消费金额”.“客单价”.“消费趋势”等结果,并据此作出可视化图形. 一.读取数据: library(op ...

  2. R语言分析(一)-----基本语法

      一, R语言所处理的工作层: 解释一下: 最下面的一层为数据源,往上是数据仓库层,往上是数据探索层,包括统计分析,统计查询,还有就是报告 再往上的三层,分别是数据挖掘,数据展现和数据决策. 由上图 ...

  3. 利用R语言制作出漂亮的交互数据可视化

    利用R语言制作出漂亮的交互数据可视化 利用R语言也可以制作出漂亮的交互数据可视化,下面和大家分享一些常用的交互可视化的R包. rCharts包 说起R语言的交互包,第一个想到的应该就是rCharts包 ...

  4. R语言数据分析利器data.table包—数据框结构处理精讲

    R语言数据分析利器data.table包-数据框结构处理精讲 R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代 ...

  5. 用R语言分析与预測员工离职

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/kMD8d5R/article/details/83542978 https://mmbiz.qpic ...

  6. 使用R语言分析股价波动

    今天看的R语言.做个笔记. 使用R语言读取雅虎財经数据.分析微软公司(股票代码:MSFT)在2015年股价波动超过百分之十的日期. 然后通过检索新闻的方式,看看微软当天有什么新闻发生,导致股价波动. ...

  7. 使用R语言的RTCGA包获取TCGA数据--转载

    转载生信技能树 https://mp.weixin.qq.com/s/JB_329LCWqo5dY6MLawfEA TCGA数据源 - R包RTCGA的简单介绍 - 首先安装及加载包 - 指定任意基因 ...

  8. 寻找与疾病相关的SNP位点——R语言从SNPedia批量提取搜索数据

    是单核苷酸多态性,人的基因是相似的,有些位点上存在差异,这种某个位点的核苷酸差异就做单核苷酸多态性,它影响着生物的性状,影响着对某些疾病的易感性.SNPedia是一个SNP调査百科,它引用各种已经发布 ...

  9. R语言数据分析利器data.table包 —— 数据框结构处理精讲

        R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理 ...

随机推荐

  1. 【开源框架】EFW框架中的系统权限与页面子权限详解

    回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://pan.baid ...

  2. 没有找到cxcore100.dll,因此这个应用程序未能启动,重新安装应用程序可能会修复此问题

    第一种情况: 出现这个问题多数是因为“环境变量PATH”未设置,虽然你可能在安装的过程中勾选了Add <...>\OpenCV\bin to the system PATH项!安装Open ...

  3. DDD:当视图模型、领域模型和数据模型都采用了同样的类型的时候,我们该如何处理?

    如果采用这种模式,模型会在不同的逻辑层之间传递,以向内传递为例,模型的状态变化是由外向内的不同逻辑层负责修改的,因为这种模式下模型的封装性是很差的,架构和框架要做到:清晰的表达每个逻辑层该如何使用和修 ...

  4. Flow: JavaScript静态类型检查工具

    Flow: JavaScript静态类型检查工具 Flow是Facebook出品的,针对JavaScript的静态类型检查工具.其代码托管在github之上,并遵守BSD开源协议. 关于Flow 它可 ...

  5. Win7以上 32/64位系统隐藏托盘图标

    前两天有朋友找我,让帮忙写个小工具,隐藏windows的托盘图标,想想最近在家也不想做太复杂的事,也好几年没写过windows上的小工具了,就答应了.想来挺简单的事,没想到还是有点小插曲的.特地来博客 ...

  6. .NET 产品版权保护方案 (.NET源码加密保护) (转载)

    说 明:你希望自己用.net辛辛苦苦做出来的软件被人轻易破解吗?你希望自己花了大量人力物力用.net开发出来的产品被竞争对手轻易获取核心代码吗?这是 一篇比较详尽地介绍如何保护自己的.net源代码的文 ...

  7. Mysql学习笔记(十二)触发器

    学习内容: 1.触发器: 什么是触发器?我们什么时候能够使用触发器?   触发器就是用来监听某个表的变化,当这个表发生变化的时候来触发某种操作..比若说两个表是相互关联的,当我们在对其中一个表格进行操 ...

  8. Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面)

    Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面)  1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选 ...

  9. C#获取本地或远程磁盘使用信息

    因为公司有多个服务器,要检查磁盘的使用情况确定程序放哪个服务器和清理垃圾,所以写个小程序帮忙检查. 效果图: 后台代码: private void btnCheck_Click(object send ...

  10. Vector Clock/Version Clock

    physical clock 机器上的物理时钟,不同的机器在同一个时间点取到的physical clock不一样,之间会存在一定的误差,NTP可以用来控制这个误差,同一个机房内的机器之间的时钟误差可以 ...