文件操作
在对文件进行操作前,可以进行工作目录的设置
1 | setwd('path') |
- path:目录路径
键盘输入
方法一
使用fix()、edit()函数修改数据框(表格)
方法二
使用scan()函数,读入数据
方法三
使用cat()函数输入数据,或导出文本数据
1 | cat(x,file='') |
参数解释
- x:为需要输入的数据
- file:值为指定输入文件的绝对路径
读取文件
txt
csv
txt
1 | read.table(x,header,sep,nrow,skip,fill) |
参数
- x:数据源
- file:从文本文件中读取数据
- “clipboard”:从剪切板中读取数据
- header = TRUE,是否有标题行。
- sep =‘ ’,使用哪个字符作为字段之间的分隔符。
- nrow 可以指定读取数据的行数。
- skip 决定跳过文件开始的多少行。
- fill = TRUE会使用NA 值来代替那些缺失的值。
- 更多高级选项包括:覆盖默认的行名、列名和类,指定输入文件的字符编码,以及输入的字符串格式的列如何声明。
- row.names, 是可以传入一个字符串的向量,用来定义每一行的名称,但是这个参数我们用的不多。
- 我们用的更多地是col.names, 就是用来定义你数据的列名。
- 还有一个比较重要的参数叫na.strings ,这个参数可以定义NA的数值,可以键入一个向量,比如na.strings =c(‘’,000,999’_’)等。
- 还有一个重要参数叫做stringsAsFactors , 它就是说要不要把字符串转换为因子,如果不需要将其转为因子,那么就默认其为stringsAsFactors = False,如果需要将其转换为字符串,那么就需要将其设置为stringsAsFactors = True。
csv
1 | read.csv(file, header, sep, dec) |
参数
- file:包含要导入到 R 中的数据的文件的路径。
- header:逻辑值。如果为 TRUE,则 read.csv() 假定您的文件具有标题行,因此第 1 行是每列的名称。如果不是这种情况,您可以添加参数 header = FALSE。
- sep:字段分隔符
- dec:文件中用于小数点的字符。
关于更多的参数可以使用help
进行查询
1 | help("read.csv") |
数据导入
非结构化文本文件
步骤
- 读入文件中的所有文本行(
readLines
方法) - 对内容进行分析或操作
readLines
1 | readLines(con = stdin(), n = -1L, ok = TRUE, warn = TRUE, |
参数
- con:连接对象或字符串
- n: 整数,一次读取的行数;设为复数表示读取整个数据;不设置时,默认读取整个文件
- ok: 逻辑值,设置ok=F, 在n>0之前,读到连接末尾,返回error
- warn:逻辑值,当文件不存在或者存在嵌入式错误时,提示
- encoding:设置编码格式
- skipNul:逻辑值,是否跳过错误
writeLines
1 | writeLines(text, con = stdout(), sep = "\n", useBytes = FALSE) |
参数
- text
A character vector - con
A connection object or a character string. - sep
character string. A string to be written to the connection after each line of text. - useBytes
logical. See ‘Details’.
结构文本文件
读取本地excel文件
read_excel()
1 | #导入readxl包 |
1 | read_excel( |
常用参数
- path,数据的完整路径
- sheet : 读取那个文件簿中的数据
- startRow:从这一行开始查找数据
- colNames:如果为真,第一行的数据就是列的名字
- rowNames:如果为真,第一类数据会被作为行的名字
- 注意:read_excel函数既可以读.xls也可以读.xlsx类型文件
readWorksheetFromFile()
从excel文件中读取sheet
1 | readWorksheetFromFile(file, ...) |
常用参数
- file:指定文件
- sheet:整数或名字,指定sheet
- head:逻辑值,默认TRUE
- startRow:起始行
- endRow:结束行
- startCol:起始列
- endCol:结束列
read.xlsx()
1 | #导入xlsx包 |
1 | read.xlsx( |
odbcConnectExcel()
建立RODBC连接对象至Excel文件,并将连接赋予一个对象(excel文件),在进行sql操作
1 | #导入RODBC包 |
1 | channel<-odbcConnectionExcel(path,...)#建立RODBC连接对象至Excel文件,并将连接赋予一个对象 |
常用属性
- path:文件路径
使用报错
1 | odbcConnectExcel is only usable with 32-bit Windows |
解决方法
- 使用
odbcConnectionExcel2007()
替代
读取网络中的表格
1 | #导入XML包 |
readHTMLtable()函数
1 | readHTMLTable( |
常用参数
- doc:HTML文件名或者URL
- header
- stringsAsFactors:设置为F,数据框将不会默认把字符型转化为因子
解决乱码问题
方法一
将数据导出到本地txt文件,再重新导入
1 | table_sub <- tables[[1]] |
方法二
使用rvest包的encoding功能,自动匹配合适的字符类型
1 | names(tables[[1]]) <- rvest::repair_encoding(names(tables[[1]])) |
数据导出
txt&csv文件导出
1 | write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ",eol = "\n", na = "NA", dec = ".", row.names = TRUE,col.names = TRUE, qmethod = c("escape", "double"),fileEncoding = "") |
参数
- x: 要写入的对象,最好是矩阵或数据框。如果不是,它是试图强迫x到一个数据框。
- file: 一个字符串命名文件或编写而打开的一个连接。 “ “表示输出到控制台。
- append: 逻辑。只有当file是一个字符串才相关。
如果TRUE,输出追加到文件
如果FALSE,任何现有文件的名称被摧毁 - quote: 一个逻辑值(TRUE或FALSE)或数字向量。如果TRUE,任何字符或因素列将用双引号包围。如果一个数值向量,其元素为引用的列的索引。在这两种情况下,行和列名报价,如果他们被写入。如果FALSE,并没有被引用。
- sep: 字段分隔符字符串。每一行x中的值都被这个字符串分隔开。
- row.names: 表示x的行名是否与x一起写的逻辑值,或者是写行名的字符向量
- col.names: 类似上面。
- 其它参数请参考help()
访问数据库
前面也有使用过RODBC包进行了数据库操作,这里不再重复导入。
1 | library(RODBC) |
连接数据库
连接数据库
1 | mycon<-odbcConnect(dsn, uid = "", pwd = "", ...) |
属性
- dsn:数据源名称(mydsn)
- uid:用户名
- pwd:密码
查看连接情况
1 | odbcGetInfo(mycon) |
创建表
1 | sqlSave(channel, dat, tablename = NULL, append = FALSE, |
常用参数
- channel:odbc连接
- dat:数据框数据
- tablename:表名
- append:逻辑值,是否在已存在的表后追加内容
- rownames:逻辑值/列名,设置是否显示行名
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小狼的学习笔记!
评论