通常情况下,我们会在excel中对数据进行预处理,然后将处理好的数据导入R中进行分析、作图。但随着数据源和数据格式的多样化,将多种数据源和数据格式导入R中进行分析、作图显得尤为必要,因为这对于数据分析、作图是最基础的。
R可导入键盘(利用键盘输入)、文本文件、excel、access、spss、sas等各类数据格式。
利用键盘输入
利用R中的edit()函数手动输入数据的文本编辑器:
(1)创建一个空数据框(或矩阵),其中变量名和变量的模式需与理想中的最终数据集一致;
(2)针对这个数据对象调用文本编辑器,输入你的数据,并将结果保存回此数据对象中。
#age(数值型)、gender(字符型)和weight(数值型)
data<-data.frame(age=numeric(0),
gender=character(0),
weight=numeric(0))
#edit()函数编辑数据
data<-edit(data)
函数edit()事实上是在对象的一个副本上进行操作的。若不将其赋值到一个目标,则所有修改将会全部丢失!
导入文本文件
用read.table()从带分隔符的文本文件中导入数据。此函数可读入一个表格格式的文件并将其保存为一个数据框。
##使用count.fields处理未知的最大字段数
## 当fill = TRUE时
test1 <- c(1:5, "6,7", "8,9,10")
tf <- tempfile()
writeLines(test1, tf)
read.csv(tf, fill = TRUE) # 1 column
ncol <- max(count.fields(tf, sep = ","))
read.csv(tf, fill = TRUE, header = FALSE,
col.names = paste0("V", seq_len(ncol)))
unlink(tf)
## “内联”数据集,使用text =
## 请注意,开头和结尾的空行是自动修剪的
read.table(header = TRUE, text = "
a b
1 2
3 4
")
参数sep允许你导入那些使用逗号以外的符号来分隔行内数据的文件。你可以使用sep="\t"读取以制表符分隔的文件。此参数的默认值为sep="",即表示分隔符可为一个或多个空格、制表符、换行符或回车符。
导入excel数据
导入xls,xlsx数据
我习惯用readxl包的read_excel()函数进行导入:
#安装readxl包
install.packages("readxl")
#调用readxl包
library(readxl)
#导入数据
df<-read_excel("相关性(5.20)(2).xlsx")
df
导入csv数据
#读取csv物种数据#
spe <- read.csv("nmds-spec.csv")
spe
导入spss数据
SPSS数据集可以通过foreign包中的函数read.spss()导入到R中,也可以使用Hmisc包中的spss.get()函数。
#安装Hmisc包
install.packages("Hmisc")
#加载Hmisc包
library(Hmisc)
data<-spss.get("3年平均地上生物量单因素方差分析数据排列.sav", use.value.labels = T)
data
use.value.labels=TRUE表示让函数将带有值标签的变量导入为R中水平对应相同的因子。
导入sas数据
R中设计了若干用来导入SAS数据集的函数,包括foreign包中的read.ssd()和Hmisc包中的sas.get()。这里我们使用sas7bdat包的read.sas7bdat()函数进行导入sas数据。
#仅供参考,我没有运行成功
read.sas7bdat("http://www.cdc.gov/nchs/tutorials/Dietary/Downloads/osteo_analysis_data.sas7bdat")
参考文献
Robert I. Kabacoff (著). R语言实战(高涛/肖楠/陈钢 译). 北京: 人民邮电出版社.