R语言实战——数据结构入门

第一章:R语言的介绍
1.典型的数据分析步骤

QQ截图20170402140439.png

2.为什么要使用R语言进行数据分析

  1.R免费,是一个全面的统计研究平台,提供了各式各样的数据分析技术
  2.R包含了其他软件不可用的、先进的数据分析技术,新方法的更新迭代非常快
  3.R拥有顶尖的制图水准,R拥有最全面且最强大的一系列功能来使数据可视化
  4.R的核心设计理念支持上图数据分析的步骤,方便数据输入和输出
  5.R可以轻松的实现各类数据的导入,包括文本文件、数据库管理系统、统计软件、乃至专门的数据仓库、甚至直接从各类网站获取在线的数据
  6.R语言简单自然,易于扩展,可以被整合进其他语言编写的程序,包括C++、 JAVA、Python、PHP、SAS、SPSS

3.R的使用
R的多数功能是由程序内置函数,用户自编函数和对对象的创建和操作所提供的,一个对象可以使任何能被赋值的东西,对R来说,对象可以是(数据、函数、图形、分析结果等等)每一个对象都有一个类属性,类属性可以告诉R怎么对之进行处理
一次交互式对话期间的所有数据都会保存在内存中,一些基本函数是默认直接可用的,其他高级函数则包含于需要加载的程序包中,R由函数和赋值构成,使用 <- 完成赋值
下面看一段代码,对R语言有个大致的认识

dir.create("D:/R/workspace/project2_20170402")
setwd("D:/R/workspace/project2_20170402")
getwd()
#打开帮助文档
help.start()
#安装vcd包(一个用于可视化类别数据的包)
install.packages("vcd")
help(package="vcd")
#导入vcd包
library(vcd)
#阅读数据集(Arthritis(来自Koch \&Edwards(1988)的数据来自调查新型类风湿性关节炎治疗的双盲临床试验。))
help(Arthritis)
#运行Arthritis自带的示例,
Arthritis
example(Arthritis)
#保存到指定的文件路径
q()

第二章 数据集的创建

1.数据结构
R语言拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组和列表。
1.1 向量:用于存储数值型、字符型或逻辑型数据的一位数组,使用组合函数c()来创建

a <- c(1,2,3,4,5)
b <- c("lily","andy","rack","aimy","dannal")

可指定访问第几个下标的元素 a[3],也可以使用:生产一个数值序列 b <- c[2:4]等价于b <- c(2,3,4)
输出结果为 "andy","rack","aimy"
1.2 标量:只含有一个元素的向量

1.3 矩阵
矩阵是一个二维数组,每一个元素的类型相同,通过matrix()函数创建
一般格式如下:
mymatrix <- matrix(vector,nrow = rows,ncol = columns,byrow = VALUSE,dimnames=list(char_rows,char_colnames))
vector :包含的所有元素
nrows:行数
ncol:列数
bycow:矩阵元素填充方式,默认bycow = FALSE,默认列填充
下面是实例代码

dir.create("D:/R/workspace/project3_20170402")
setwd("D:/R/workspace/project3_20170402")
mx <- matrix(1:20, nrow = 4,ncol = 5,byrow = TRUE)
mx
#打印第一列
mx[,1]
#打印第一行第三列
mx[1,3]
q()

1.4.数组
数组与矩阵类似,但是维度可以大于2,通过array()函数创建
marray <- array(vector, dimensions,dimnames)
vector:包含的元素
dimensions:数值型向量,给出给个维度下标的最大值
dimnames:可选参数,各维度名称标签列表
实例:写出一个2x3x4 的有三维度的数值型数组

dim1 <- c("a1","a2")
dim2 <- c("b1","b2","b3")
dim3 <- c("c1","c2","c3","c4")
myarray <- array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3))
myarray
myarray[1,2,3]
q()

1.5 数据框
数据框可以用来存储不同列不同类型的数据,较矩阵来说更加一般,是R中最常处理的数据结构
,使用data.frame()函数来创建
mydata <- data.frame(col1,col2,col3.....)
eg:

id <- c(1,2,3,4,5,6)
name <- c("lily","nick","peter","sam","zack","mogen")
age <- c(25,35,47,30,55,42)
testresult <- c("poor","good","nice","excllent","good")
student <- data.frame(id,name,age,testresult)
testresult <- c("poor","good","nice","excllent","good","nice")
student <- data.frame(id,name,age,testresult)
student
#获取数据框中特定的变量
table(student$name,student$age)
plot(student$name,student$age)

eg :导入病例数据.xlsx 的数据来生成一个数据框并新增一条记录
xlsx 内容如下图

currentpatient <- read.table("D:/R/RStudioWorkspace/project1_20170402/病例数据.csv",header = TRUE,row.names = "病人编号",sep = ",",stringsAsFactors = FALSE)
> currentpatient
  姓名 年龄 糖尿病类型     病情      英文
1 猴子   29  1型糖尿病     较差      Poor
2 李同   34  2型糖尿病     好转  Improved
3 王五   28  1型糖尿病 显著好转 Excellent
4 张三   52  2型糖尿病     较差      Poor

1.首先将xlsx 转为csv 格式文件,调用read.table()方法读取成一个数框,

2.生成一条病例数据,调用rbind ()方法插入,下面是整体代码:

currentpatient <- read.table("D:/R/RStudioWorkspace/project1_20170402/病例数据.csv",header = TRUE,row.names = "病人编号",sep = ",",stringsAsFactors = FALSE)
> currentpatient
  姓名 年龄 糖尿病类型     病情      英文
1 猴子   29  1型糖尿病     较差      Poor
2 李同   34  2型糖尿病     好转  Improved
3 王五   28  1型糖尿病 显著好转 Excellent
4 张三   52  2型糖尿病     较差      Poor
> 病人编号 <- c(5)
> 姓名 <- c("李雷")
> 病情 <- c("较差")
> 年龄 <- c(30)
> 英文 <- "poor"
> newpatient3 <- data.frame(病人编号,姓名,年龄,糖尿病类型,病情,英文)
> data <- rbind(currentpatient,newpatient3)
Error in rbind(deparse.level, ...) : 变量的列数不对
> data <- rbind(currentpatient,newpatient3)
Error in rbind(deparse.level, ...) : 变量的列数不对
> newpatient3 <- data.frame(姓名,年龄,糖尿病类型,病情,英文)
> data <- rbind(currentpatient,newpatient3)
> data
  姓名 年龄 糖尿病类型     病情      英文
1 猴子   29  1型糖尿病     较差      Poor
2 李同   34  2型糖尿病     好转  Improved
3 王五   28  1型糖尿病 显著好转 Excellent
4 张三   52  2型糖尿病     较差      Poor
5 李雷   30  2型糖尿病     较差      poor
> 

1.6 因子
名义型变量(没有顺序之分的类别变量),有序型(变量间有顺序关系,但不知道相差多少)在R中称为因子
对于字符型向量,因子的水平默认依字母的顺序创建,但在现实中意义不大,字母顺序不一定就是我们想要的逻辑顺序,因此,可以指定levels 选项来覆盖默认排序
status <- factor(status,order =TRUE,levels =c("poor","Improved","Excellent"))
1.7 列表
复杂度最高的一种数据类型,列表就是一些对象的的有序集合,使用list()来创建

age<- c(1,2,3,4)
data <- -matrix(1:10,nrow=2)
e <- "a list"
mylist <- list(title = e,age = age,data = data)
#打印出age向量
mylist[[2]] 或者mylist[["ages"]]

三.数据的输入
1.从键盘输入 使用edit()
2.从带分割符的文本文件导入数据,使用read.table() 导入数据框

> currentpatient <- read.table("D:/R/RStudioWorkspace/project1_20170402/病例数据.csv",header = TRUE,row.names = "病人编号",sep = ",")
> currentpatient
  姓名 年龄 糖尿病类型     病情    病情.1
1 猴子   29  1型糖尿病     较差      Poor
2 李同   34  2型糖尿病     好转  Improved
3 王五   28  1型糖尿病 显著好转 Excellent
4 张三   52  2型糖尿病     较差      Poor

3.从excel导入数据
3.3.1 读取excel 最好的方式,就是把excel导出为一个逗号分隔文件(csv)并使用2.中描述的方法
3.3.2 使用xlsx 包直接导入excel
eg :

dir.create("D:R/workspace/project4_20170402")
setwd("D:R/workspace/project4_20170402")
getwd()
install.packages("xlsxjars")
install.packages("rJava")
library(xlsxjars)
install.packages("xlsx")
library(xlsx)
workexcel <- "D:/R/workspace/project4_20170402/病例数据.xlsx"
mydataframe <- read.xlsx(workexcel,1)
mydataframe
q()

这样打印出的是乱码,啥子情况,如何修改编码方式?
4.从网页抓取数据
5.导入spss数据
6.导入sas数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容