Data input
read.table(file,options)
常用的options如下
选项 | 描述 |
---|---|
header | 文件第一行是否包含变量名称。如果不指定,read.table()会根据行标签进行判断,即如果首行比下面的行少一列,就是header行。默认为FALSE即数据框的列名为V1,V2...,设置为TRUE时第一行作为列名。 |
sep | 间隔符号。默认是sep=''",代表空格、制表符、换行或回车。可以指定为' ', '\t'等 |
row.names | 指定行名 |
col.names | 指定列名 |
na.strings | 用于表示缺失值的字符向量。指定缺损值。默认为NA |
colClasses | 指定列的变量类型。如果指定,则用指定的名称替代首行中的列名称 |
quote | 指定字符串分隔符,如" 或 ' |
stringsAsFactors | 逻辑变量,是否将目标变量转化为因子。默认值为TRUE |
fill | 文件中是否忽略了行尾字段。如果有,必须指定为 TRUE |
strip.white | 是否去除字符串字段首尾的空白 |
blank.lines.skip | 是否忽略空白行,默认为TRUE。如果要指定为FALSE,需要同时指定 fill = TRUE 才有效 |
comment.char | 注释符。默认使用#作为注释符号,如果文件中没有注释,指定comment.char = "" 会比较安全 (也可能让速度比较快)comment.char = "!" 表示该行中!随后的内容将会被忽略 |
fileEncoding | 如果数据集中含有中文,直接导入很有可能不识别中文,这时加上参数fileEncoding='utf-8' |
stringAsFactorsstring | stringAsFactors=FALSE,防止导入的数据任何的因子转换 |
1 导入csv文件 sep=","
mydata <- read.table("C:/Users/jfguo/Documents/R-day3/exp.csv", header=TRUE, sep=",")
加了header=T,则第一行为表头,若不加则第一行就从表头名称开始;sep=","使表格分开,若不加,则全部挤在一起。
question:加row.names = "id",报错Error in data[[rowvar]] : attempt to select less than one element in get1index
原因:
解决方法:
设置第一列为列名的参数是row.names = 1
row.names = 1
不加 row.names = 1
2 导入excel文件
方法1:转换为csv格式,按照上述方法导入;
方法2:使用R包xlsx,第一行应该包含变量/列名。
library(xlsx)
mydata <- read.xlsx("c:/myexcel.xlsx", 1) #读excel中的第一个工作表
mydata <- read.xlsx("c:/myexcel.xlsx", sheetName = "DEg") #读excel中命名为DEg的sheet表
library(xlsx),报错Error: package or namespace load failed for ‘xlsx’: loadNamespace()里算'rJava'时.onLoad失败了,详细内容: 调用: fun(libname, pkgname) 错误: JAVA_HOME cannot be determined from the Registry
解决: 由于之前重装系统未装JAVA,所以重装J AVA,安装路径与R相同,并添加到系统变量,配置JAVA环境具体可参照http://jingyan.baidu.com/album/6dad5075d1dc40a123e36ea3.html?picindex=1
其中的遇到的问题:
mydata <- read.xlsx("exp2.xlsx")
报错Error in read.xlsx("exp2.xlsx") : Please provide a sheet name OR a sheet index.
因为没指定读取哪个工作表。
3 导入TXT文件 sep="\t"
1.对于简单文件,可以简单读取,mydata <- read.table("exp3.txt")
-
2.对于复杂文件,
mydata <-read.table("exp3.txt",sep="\t",header=T,row.names = 1)
4 导入SPSS文件(.sav)
导入sav格式可以通过foreigh
包中read.spss函数和Hmisc
包中spss.get函数完成。spss.get函数是read.spss函数的封装,可以自动设置许多参数。建议使用Hmisc
包spss.get
函数。
# save SPSS dataset in trasport format
get file='c:\mydata.sav'.
export outfile='c:\mydata.por'.
# in R
library(Hmisc)
mydata <- spss.get("c:/mydata.por", use.value.labels=TRUE)
# last option converts value labels to R factors
5导入SAS文件
# save SAS dataset in trasport format
libname out xport 'c:/mydata.xpt';
data out.mydata;
set sasuser.mydata;
run;
#in R
library(Hmisc)
mydata <- sasxport.get("c:/mydata.xpt")
# character variables are converted to R factors
6导入STATA文件
# input Stata file
library(foreign)
mydata <- read.dta("c:/mydata.dta")
7 导入systat文件
# input Systat file
library(foreign)
mydata <- read.systat("c:/mydata.dta")
另外还可通过Rstudio右上角Environment面板页中的ImportDataset导入exlsx、SPSS、SAS、Stata文件。