本文主要介绍数据基本的输入与输出方法,内容包括:
- 1. 数据的输入
- 1.1 scan(), edit(), fix()
- 1.2 调用 R 包自带数据
- 1.3 调用本地数据
- 2. 数据的输出
1. 数据的输入
1.1 scan(), edit(), fix()
手动输入数据主要有以下几种方式:
x <- c()
# c() 进行赋值x <- scan()
x <- scan(what = "")
x <- scan(what = list())
# scan() 手动输入数值型数据
# scan(what = "") 手动输入字符型数据
# scan(what = list()) 手动输入多种类型数据x <- data.frame()
x <- edit(x)
# edit(x) 手动填制表格
fix(x)
# 同上
- scan() 生成一维数据结构
- edit(), fix() 将数据输入二维数据结构
x <- data.frame()
x <- edit(x)
fix(x) # 与上一行代码效果相同,效果如下图所示
1.2 调用 R 包自带数据
实现调用 R 包自带数据主要通过 data() 函数实现:
data() # 查看 R 自带所有的数据集
data(package = "ggplot2") # 查看 ggplot2 程辑包中自带的数据集
data(mpg, package = "ggplot2") # 将 ggplot2 中的 mpg 数据集加入到 environment 中
1.3 调用本地数据
实现调用本地数据可以通过在 Environment 窗口栏选择 Import Dataset,或通过 http://read.xxx() 函数读取本地数据。
- Environment - Import Dataset
图中,From Text(base) 表示使用 base 包的读取函数从本地读取文件;From Text(readr) 则表示使用 readr 包的读取函数读取数据,并且除了本地数据,还可以通过 URL 下载 txt 数据;From Excel 从本地读取 excel 文件;最后三个选项则是从其他统计软件读取数据。这里只介绍 From Text(base):
Name 对数据集命名;Encoding 表示编码,如果数据中的中文字符出现乱码,可以尝试选择 utf-8;Heading 控制是否将第一行作为列名,Yes 为是;Row names 控制行名,可以选择将第一列作为行名,也可以选择用数字表示;Separator 识别分隔符号,如图中将逗号(Comma) 识别为分隔号,若将其他符号识别为分隔号,则读取的数据形式不正确;na.strings 控制用什么填补缺失值,图中使用 NA;Strings as factors 勾选将字符型变量转换为因子型变量。设置完成以后 Import 载入数据。
- http://read.xxx()
read.table("filename", header = T, stringsAsFactors = T, na.strings = "NA", fill = T, row.names = 1)
read.csv("filename", ...)
header = T 将第一行作为列名;stringsAsFactors = T 将字符型变量转换为因子型变量;na.strings = "NA" 用 NA 填补缺失值;fill = T 自动填补缺失值;row.names = 1 将第一列作为行名。
初学者大多数接触到的都可以使用 read.table() 和 read.csv() 读取,上面罗列了几个常用的参数。其他参数可以参考:https://www.jianshu.com/p/90e1d430c9ef
2. 数据的输出
与输入相对,数据的输出代码由 http://write.xxx() 完成,实现方法如下:
write.table(dataset, file = "filename", append = F, quote = T, sep = " ", eol = "n", na = "NA", dec = ".", row.names = T,col.names = T, qmethod = c("e", "d"),fileEncoding = "utf-8")
write.csv(...)
append = F 新写入的数据会将原始数据覆盖,T 则向后添加的方式继续写入;quote = T 字符型变量和因子型变量被双引号修饰;sep = " " 设置字段分隔符号;eol = "n" 在每行数据末端添加换行符;na = "NA" 用 NA 表示缺失值;dec 控制小数点字符;row.names/ col.names = T 将行/列名写入文件,也可用于直接指定行/列名;qmethod 设置 quote 的双引号如何表达,为 "e" 则用 " 表达,为 "d" 则用 ' " ' 表达。