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

作者: Mr_dvbkhm | 来源:发表于2017-04-02 19:00 被阅读389次

第一章: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数据

相关文章

  • 『Bilibili生信人应该这样学R语言』STEP BY STE

    me, knowing nothing still P23 系统的入门 R 语言 03:01 荐书:《R语言实战(...

  • R 语言--日期值的输入

    学习R语言,很多人都推荐使用图灵程序设计丛书中的"R in Action"-《R语言实战》作为R语言学习的入门书籍...

  • R语言学习笔记

    R语言学习系列参考书籍:《R语言实战》。 一、入门 1. 工作空间: getwd():查看当前工作目录setwd(...

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

    第一章:R语言的介绍1.典型的数据分析步骤 2.为什么要使用R语言进行数据分析 3.R的使用R的多数功能是由程序内...

  • R语言实战2:数据结构

    title: "R语言实战2:数据结构"author: "wintryheart"date: "2019年5月17...

  • R入门?从Tidyverse学起!

    很多人推荐《R语言实战》这本书来入门R,当然,这本书非常不错,我也是通过这本书开始接触的R。这种入门的学习路径属于...

  • R 语言入门:tidyverse 生态链

    说明:文章内容截选自实验楼教程【R 语言基础入门】~ 前言:本课程主要讲解包括 R 语言的基本数据结构 , tid...

  • R语言入门:基础数据结构

    说明:文章内容截选自实验楼教程【R 语言基础入门】~ 前言:本课程主要讲解包括 R 语言的基本数据结构 , tid...

  • 《学习小组Day5笔记--寒鹤》

    R语言之数据结构 今天的学习内容是R语言的数据结构。R语言的数据结构主要有向量(vector),矩阵(matrix...

  • R语言入门与实战

    课程概览 课时列表 评价 笔记( 12 ) 课时1:R语言是什么、R的优势、资源16:08 课时2:R的安装、获取...

网友评论

    本文标题:R语言实战——数据结构入门

    本文链接:https://www.haomeiwen.com/subject/dolgottx.html