课程视频链接:https://www.bilibili.com/video/BV19x411X7C6?p=1
本笔记参照该视频,笔记顺序做了些调整【个人感觉逻辑顺畅】,并删掉一些不重要的内容
系列笔记目录【持续更新】:https://blog.csdn.net/weixin_42214698/category_11393896.html
文章目录
- 1.R获取数据的三种途径
- 1.1 键盘输入数据
- 1.2 读取存储在外部文件上的数据
- 1.3 访问数据库系统获取数据
- 2.读入文件
- 2.1 读取本地文件 read.table()
- 2.2 读取剪贴板
- 3.写入文件 write.table()
- 4.读取 和 写入Excel文件
- 4.1 —————— XLConnect包
- 4.2 —————— xlsx包
- 5.读写R格式文件
1.R获取数据的三种途径
1️⃣利用键盘来输入数据;
2️⃣通过读取存储在外部文件上的数据;
3️⃣通过访问数据库系统来获取数据。
例如有以下数据:
1.1 键盘输入数据
方式一:
> patientID <- c(1, 2, 3, 4)
> admdate <- c("10/15/2009","11/01/2009","10/21/2009","10/28/2009")
> age <- c(25, 34, 28, 52)
> diabetes <- c("Type1", "Type2", "Type1", "Type1")
> status <- c("Poor", "Improved", "Excellent", "Poor")
> data <- data.frame(patientID, age, diabetes, status)
> data
patientID age diabetes status
1 1 25 Type1 Poor
2 2 34 Type2 Improved
3 3 28 Type1 Excellent
4 4 52 Type1 Poor
>
方式二:【通过edit( )来输入数据】
data2 <- data.frame(patientID=character(0), age=numeric(0),
diabetes=character(), status=character())
data2 <- edit(data2)
调用后会显示一个数据编辑器,可以直接在编辑器里输入数据,结果会保存在data2中:
再调用fix(data2),可以继续进行数据修改。
1.2 读取存储在外部文件上的数据
利用R读取的文件,最好是经过处理的适合R使用的文件。
数据需要进行大量的预处理,最好先利用python进行统计,再将统计结果导入到R软件中进行分析。
具体访问方法在之后会详细讲到。
1.3 访问数据库系统获取数据
通过ODBC访问数据库。ODBC是开放数据库连接Open DataBase Connectivity的简称。
在R中可以通过RODBC包来连接和访问数据库。
install.packages(“RODBC”)
library(RODBC)
help(package="RODBC")
2.读入文件
2.1 读取本地文件 read.table()
read.table(file , sep , header , skip, nrows, na.strings , stringsAsFactors)
\- file为读取的文件名; 【可以是绝对路径 or 相对路径】
\- sep为文件分隔符; 【默认为空白】
\- 若文件头部为变量名称,则header为TRUE; 【重点,为true时第一行不是数据,而且列名】
\- skip为跳过文件中某部分内容; 【从第一行开始跳,skip=n ——>表示1~n不用读取】
\- nrows设置读取文件行数;
\- na.strings:告诉read.table函数哪部分属于缺失值,read.table函数将这部分替换为NA;
\-stringsAsFactors:R在读取文件时,数字会默认都读取为数值型,但字符串会默认读取为因子类型,
若不需要将字符串读取为因子类型,则可设置为FALSE;
\- ……
如:
x <- read.table (“input.csv”) 错误
x <- read.table (“input.csv”,sep=“,”) 正确
x <- read.table (“input.csv”,sep=“,”,header = T) 正确 ,第一行为列名
x <- read.table(“input.csv”,sep=“,”,header=TRUE,skip=50,nrows=200):
读取文件input.csv,文件内容以逗号分隔,若文件头部为变量名称,则header为TRUE,读取文件第51行至250行。
head(x , n=10):截取文件头部十行。n默认是六行。
tail(x , n=10):截取文件尾部十行。n默认是六行。
readLines(“input.csv”,n=5):可以直接读取文件中的行数。
read.csv(“input.csv”):直接读取csv文件,默认分隔符为逗号。
read.delim():默认分隔符为制表符。
2.2 读取剪贴板
读取系统剪切板上的数据:
x <- read.table(“clipboard” ,seq=“…”)
or x <- readClipboard()
不推荐直接读取网络上的文件 或 直接读取压缩文件
3.写入文件 write.table()
write函数与cat函数类似,只不过cat函数是将数据显示在屏幕上,而write则是写到文件里面。
如:
x <- rivers
write(x,file=“x.txt”)
如果对象是一个数据框,可以使用write.table函数,如果是写入到csv文件,则可以使用write.csv文件。
write.table(x , file , sep , row.names , quote ,append , na)
\- x是需要写入的数据;
\- file是写入的文件,若没有目录,则默认写在当前工作目录下;
\- sep是指定的数据分隔符;
\- 若不需要每次数据写入文件时加上序号,则设置row.names为FALSE;
\- 默认情况下,write函数会为字符串添加双引号,若不需要,则可设置quote为FALSE;
\- append参数将文件内容写入相同文件名的文件中,TRUE表示追加到文件结尾,FALSE则表示清空原文件内容再写入;
\- na参数代表设置缺失值为NA;
注意:若写入文件是csv,则分隔符最好是逗号,可以将一个数据分为一个单元格。
不推荐:
R不仅支持直接读取压缩文件,也支持直接写成压缩文件。
如: write.table(mtcars,gzfile(“newfile.txt.gz”))
表示将文件压缩为gz格式的压缩包。
4.读取 和 写入Excel文件
简单方法:
1️⃣- 将excel文件转为csv文件读取;
2️⃣- 将excel文件数据内容复制到剪切板中读取。
但是当Excel文件过多时,上面的简单方法用起来就比较麻烦了。R中包含许多直接读取Excel文件的包。
4.1 —————— XLConnect包
XLConnect包:需要配置java的运行环境。
install.packages("XLConnect") # 安装包
library(XLConnect) # 导入包,就可以使用
读文件:
1)两步
ex <- loadWorkbook(“data.xlsx”)
edata <- readWorksheet(ex,1) # 表示读取ex表格中的第一个工作表
edata <- readWorksheet(ex,1,startRow=0,startCol=0,endRow=50,endCol=3)
2)一步
readWorksheetFromFile (“data.xlsx”,1,startRow=0,startCol=0, endRow=50,endCol=3,header=TRUE)
写文件:
1)四步
wb <- loadWorkbook(“file.xlsx”,create=T) #创建工作簿
createSheet(wb,“Sheet 1”) #创建工作表sheet1
writeWorksheet(wb,data=mtcars,sheet=“Sheet 1”) #写数据
saveWorkbook(wb) #将工作簿保存为文件
2)一步
writeWorksheetToFile(“file.xlsx”,data=mtcars,sheet=“Sheet 1”)
4.2 —————— xlsx包
install.packages("xlsx")
library(xlsx)
读文件:
x <- read.xlsx(“data.xlsx”,1) #表示读取表格中的sheet1工作表
写文件:
write.xlsx(x,file=“data.xlsx”,sheetName=“Sheet 1”,append=F) #将数据写入表格Sheet1中
5.读写R格式文件
存储为R文件会有很多优势:
R会对存储为内部文件格式的数据进行自动压缩处理,并且会存储所有与待存储对象相关的R元数据。
如果数据中包含了因子、日期和时间或者类的属性等信息,存储为R文件则更加实用。
R格式的文件有两种:RDS 和 RData。
(1) .RDS文件
# iris为内置数据集
saveRDS(iris,file="iris.RDS")
rdsdata <- readRDS("iris.RDS")
(2).RData文件(更复杂,整个项目文件)
> save(iris,iris3,file="iris.Rdata")
>
> load("iris.Rdata")
> save.image() 【保存所有】