用R做简单的数据分析

一周过去了, 看数据看的比较心烦. 不过烦归烦, 仍然需要进行分析, 也要学会从工作中寻找亮点;)

花了很多时间分析统计数据, 到最后还是回归到n行m列的节奏, 无非就是从这n行数据中统计一些常规的数据, 诸如: 算一下某一列的平均值; 根据某一列删选出一些数据再做计算; 根据某一列排序等等等等. 一般这种活都是把统计好的数据粘贴到excel中, 然后反复操作, 反复观察;) 当然也可以将数据存到数据库中, 利用SQL语句来查询; 其实还可以用R来完成, 很方便.

题外话, 如果早点知道R的话, 当年就不用matlab而用R来做数学建模了.

假设我们现在需要分析这样一个文本:

data.txt
1
2
3
4
col1 col2 col3
x1   x2   x3
y1   y2   y3
z1   z2   z3

尝试用R来做一些简单的统计;)

导入数据

R中导入数据很容易, 使用read.table函数即可:

1
my_data = read.table('data.txt', header = TRUE)

当然我们还可以指定诸如列分隔符等设定. 值得一提的一个选项是check.name. 这个参数用于设定列名是否可以出现特殊字符. 比如假设第一行某列为speed(km/h), 采用默认方式导入会将括号等字符变为..

简单统计

这里主要是dataframe的操作. 最常用的操作

1
my_data[which(conditon), col]

前面表示取的row条件, 用于筛选行, 这部分可以省略. 后者是指定col的一个向量

examples
1
2
3
4
5
6
7
8
9
attach(my_data)

my_data[c('col1')]              # get all col1 rows

my_data[which(col1 > 10),]      # get all rows which col1 ls larger than 10

my_data[which(col2 == 'xxx' & col1 > 10), c('col3')]

detach(my_data)

attachdetach是为了简化筛选的书写. 同样值得一提的是如果列名中包含特殊字符, 可以使用 ` 来指定.

经过筛选后可以使用常用的函数计算一些常用的值, 例如sum, mean, sd等; 作一些图: plot, barplot.

如果还觉得不够爽, 并且熟悉SQL的话, 推荐一个库: sqldf. 用它的话可以通过写sql来操作dataframe.

感受

使用R下来的感受:

  1. 操作方便, 功能
  2. 帮助文档很详细, 但学习起来有点费劲

PPPPSSSS

  1. 柯南剧场版17已经出了, 推荐一下, 还是蛮不错;)
  2. 附上一个蛮火的Tomcat/JBoss漏洞. 佩服作者, 太厉害了….
R

Comments