菜鸟学R语言:用R做数据分析(零基础)之前言

September 25, 2013

Tags:菜鸟学R语言

最近在上coursera的课,九月初的时候选了几门,现在陆续开课了。因为第一年自学数据分析和R收效甚微,想系统的学学,于是选了Statistics One (12周)和 Computing for Data Analysis (4周)。我会陆续分享我学到的知识和感想。


前言

What makes R different?

约翰·霍普金斯大学的华裔老师Roger Peng(Computing for Data Analysis的授课人)就以这个标题开篇。我觉得挺有必要理理清楚的,之前在统计之都和谢益辉的博客中看到过类似的讨论,由于我还是个门外汉,对于行内人的讨论只能看个热闹。这次Roger的解释面向的都是零基础学生,所以,这种解释可能更适合菜鸟来看。

Roger提到,在数据分析或统计分析的世界中,常用的工具软件可以大致分为三类,

  1. 经典的命令行,人机互动界面。在对话窗口中敲命令,回车,得到个返回值,然后再敲命令,回车,又得到个返回值。
  2. 传统的编程语言,如C,C++,Perl和Python等。虽然和1.相仿,都是写代码,但是1.是输入命令,出结果,而这些传统编程语言则是要写好整个程序,不光光是用于运算的那些命令。所以这类语言不具备即时互动的特点。
  3. 可视化操作界面,微软的Excel等。鼠标动动点点即可,不涉及到真正的计算机语言和编程。

而R语言,则是整合了命令行窗口和编程语言界面的一种特殊的语言。有人认为,这有什么好的,让我选肯定选择有可视化界面的软件。但Roger认为,恰恰是具备前两种特点,才让R独树一帜。有传统编程语言知识的同学,和习惯与SAS或STATA的命令行操作打交道的同学都可以在R中找到自己熟悉上手的地方。也正因为R整合了这两种方式,对于菜鸟或者新手来说,可以先从命令行模式入门,利用其即时互动的模式,通过输入命令,快速得到自己想要的统计结果,随着你学习的深入,需求的增长,你可利用学过的传统编程语言知识,自己写一个满足自己需求的软件包。最终,集思广益,R软件包的功能一定会非常强大,当然目前已经非常强大了。

所以,不像Excel功能相对单一,很难跟上数据统计分析的快速增长的需求,也不像Python那样入门门槛较高,需要接触到很多与数据统计分析无关的知识。R的这种由浅入深,可谓深得人心。

下面贴出普林斯顿大学Andrew Conway老师在Statistics One课程中提供的Introduction to R的入门脚本。我保留了英文原文的注释,因为对于新手来说,直接学习英文资料要来的更纯,很多function名记起来会更直接。下一篇,我再详细介绍一下以下这些功能。

# Basic mathematical operations
3 + 4
5 * 5
12 / 3
5^5

# R objects

# Vector 

## Most basic object in R 

## Contains elements of the same class

## Can be: character, numeric, integer, complex, logical(True/False))

# Create a vector
v=c(1,3,5,7)
v

# List 

## (Vector with different class of objects) 
l=list("Blue", 2, 5, "Red")
l

# Create a matrix
m=matrix(1:6,2,3)
m

## Matrix creation is column-wise

# Create a matrix from a vector
m2=matrix(1:6)

# Then add dimensionality
dim(m2)=c(2,3)
m2

# Create a matrix by binding columns or rows
x=1:6
y=5:10
cbind(x,y) # by column
rbind(x,y) # by row

# Check the attributes
attributes(m)

# Call a particular cell in a matrix
m
m[1,2]

# Dataframes

## Different than matrices => can store different classes of objects

## Usually called with read.table()

# Create a dataframe
d=data.frame(subjectID=1:5,gender=c("M","F","F","M","F"),score=c(8,3,6,5,5))
d

# Number of rows
nrow(d)

# Number of columns
ncol(d)

# Check the attributes
attributes(d)

# Call a particular cell in a dataframe
d[2,1]
d[1,2]

# Display dataframe
View(d)

# Edit dataframe
edit(d)

# Getting help on a function
?functionname

# Download and install packages
install.packages("psych") ## Need to specify CRAN the 1st time

# Load package
library(psych)

· The end ·