R语言中的read.table()

参考资料:http://www.cnblogs.com/xianghang123/archive/2012/06/06/2538274.html

read.table(file, header = FALSE, sep = "", quote = "\"‘",
           dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
           row.names, col.names, as.is = !stringsAsFactors,
           na.strings = "NA", colClasses = NA, nrows = -1,
           skip = 0, check.names = TRUE, fill = !blank.lines.skip,
           strip.white = FALSE, blank.lines.skip = TRUE,
           comment.char = "#",
           allowEscapes = FALSE, flush = FALSE,
           stringsAsFactors = default.stringsAsFactors(),
           fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
  • file 指定读入的文件
  • header 是否有列名(默认无)
  • seq 指定分隔符(空格、TAB、换行符、回车符)
  • quote 制定包围字符型数据的字符。默认情况下,字符串可以被 " 或 ’ 括起,并且两种情况下,引号内部的字符都作为字符串的一部分。有效的引用字符(可能没有)的设置由参数 quote 控制。默认值改为 quote = “”
  • dec = “.” 指定小数点数
  • colClasses 指定列的数据类型格式
  • row.names 指定各行名称,也可以是数字,指定某列为行名
  • col.names
  • as.is = !stringsAsFactors as.is 字符向量是否转换成因子(仅仅这个功能),TRUE时保留为字符型
  • na.strings = “NA” 指定什么样的字符表示值缺少
  • colClasses = NA colClasses运行为输入中的每个列设置需要的类型。注意,colClasses 和 as.is 对每 列专用,而不是每个变量。因此,它对行标签列也同样适用(如果有的话)。
  • nrows = -1 最大读入行数,即读入前多少行,“-1”表示都读入
  • skip = 0 跳过文件的前n行(skip = n)
  • check.names = TRUE # 检查变量名在R中是否有效
  • fill = !blank.lines.skip 从一个电子表格中导出的文件通常会把拖尾的空字段(包括?堑姆指舴? 忽略掉。为了读取这样的文件,必须设置参数 fill = TRUE
  • strip.white = FALSE 如果设定了分隔符,字符字段起始和收尾处的空白会作为字段一部分看待的。为了去掉这些空白,可以使用参数 strip.white = TRUE
  • blank.lines.skip = TRUE 默认情况下,read.table 忽略空白行。这可以通过设置 blank.lines.skip = FALSE 来改变。但这个参数只有在和 fill = TRUE 共同使用时才有效。这时,可能是用空白行表明规则数据中的缺损样本。
  • comment.char = “#” 默认情况下,read.table 用 # 作为注释标识字符。如果碰到该字符(除了在被引用的字符串内),该行中随后的内容将会被忽略。只含有空白和注释的行被当作空白行。如果确认数据文件中没有注释内容,用 comment.char = “” 会比较安全 (也可能让速度比较快)。
  • allowEscapes = FALSEread.table 和 scan 都有一个逻辑参数 allowEscapes。从 R 2.2.0 开始,该参数默认为否,而且反斜杠是唯一被解释为逃逸引用符的字符(在前面描述的环境中)。如果该参数设为是,以C形式的逃逸规则解释,也就是控制符如 , , , , , , 八进制和十六进制如 40 和 x2A 一样描述。任何其它逃逸字符都看着是自己,包括反斜杠

women1.txt

name	height	weight	tmp
stu1	58	115	1.1
stu2	59	117	1.2
stu3	60	120	1.3
stu4	61	123	1.4
stu5	62	126	1.5
stu6	63	129	1.6
stu7	64	132	1.7
stu8	65	135	1.8
stu9	66	139	1.9
stu10	67	142	2
stu11	68	146	2.1
stu12	69	150	2.2
stu13	70	154	2.3
stu14	71	159	2.4
stu15	72	164	2.5
## 基本参数
dataset1 <- read.table("./women1.txt", header = T, sep = "\t")
head(dataset1)

##   name height weight tmp
## 1 stu1     58    115 1.1
## 2 stu2     59    117 1.2
## 3 stu3     60    120 1.3
## 4 stu4     61    123 1.4
## 5 stu5     62    126 1.5
## 6 stu6     63    129 1.6

dataset1$name

##  [1] stu1  stu2  stu3  stu4  stu5  stu6  stu7  stu8  stu9  stu10 stu11
## [12] stu12 stu13 stu14 stu15
## 15 Levels: stu1 stu10 stu11 stu12 stu13 stu14 stu15 stu2 stu3 ... stu9

class(dataset1$name)

## [1] "factor"

is.factor(dataset1$name)

## [1] TRUE

dataset1 <- read.table("./women1.txt", header = T, sep = "\t", as.is = T)
head(dataset1)

##   name height weight tmp
## 1 stu1     58    115 1.1
## 2 stu2     59    117 1.2
## 3 stu3     60    120 1.3
## 4 stu4     61    123 1.4
## 5 stu5     62    126 1.5
## 6 stu6     63    129 1.6

dataset1$name

##  [1] "stu1"  "stu2"  "stu3"  "stu4"  "stu5"  "stu6"  "stu7"  "stu8"
##  [9] "stu9"  "stu10" "stu11" "stu12" "stu13" "stu14" "stu15"

class(dataset1$name)

## [1] "character"

is.factor(dataset1$name)

## [1] FALSE

## skip = 0 跳过文件的前n行(skip = n)
dataset2 <- read.table("./women1.txt", header = T, sep = "\t", skip = 3)
head(dataset2)

##   stu3 X60 X120 X1.3
## 1 stu4  61  123  1.4
## 2 stu5  62  126  1.5
## 3 stu6  63  129  1.6
## 4 stu7  64  132  1.7
## 5 stu8  65  135  1.8
## 6 stu9  66  139  1.9

dataset2 <- read.table("./women1.txt", header = F, sep = "\t", skip = 3)
head(dataset2)

##     V1 V2  V3  V4
## 1 stu3 60 120 1.3
## 2 stu4 61 123 1.4
## 3 stu5 62 126 1.5
## 4 stu6 63 129 1.6
## 5 stu7 64 132 1.7
## 6 stu8 65 135 1.8

## nrows = -1 最大读入行数,“-1”表示都读入
dataset3 <- read.table("./women1.txt", header = T, sep = "\t", nrows = 3)
head(dataset3)

##   name height weight tmp
## 1 stu1     58    115 1.1
## 2 stu2     59    117 1.2
## 3 stu3     60    120 1.3

dataset3 <- read.table("./women1.txt", header = F, sep = "\t", nrows = 3)
head(dataset3)

##     V1     V2     V3  V4
## 1 name height weight tmp
## 2 stu1     58    115 1.1
## 3 stu2     59    117 1.2

## 指定行名
dataset4 <- read.table("./women1.txt", header = T, sep = "\t", row.names = 1) # **表中第一行一列元素被跳过**
head(dataset4)

##      height weight tmp
## stu1     58    115 1.1
## stu2     59    117 1.2
## stu3     60    120 1.3
## stu4     61    123 1.4
## stu5     62    126 1.5
## stu6     63    129 1.6

row.names(dataset4)

##  [1] "stu1"  "stu2"  "stu3"  "stu4"  "stu5"  "stu6"  "stu7"  "stu8"
##  [9] "stu9"  "stu10" "stu11" "stu12" "stu13" "stu14" "stu15"

women2.txt

\ 这是一些简单的测试数据

name	height	weight	tmp
/stu1/	58	115	1*1
/stu2/	59	117	1*2
/stu3/	60	""	1*3\注意:空格处经测试必须引起来,
					\否则会出先error“……line 3 did not have 4 elements”
/stu4/	61	123	1*4
/stu5/	62	NO	1*5
/stu6/	NO	NO	1*6
/stu7/	64	132	1*7
/stu8/	65	135	1*8
/stu9/	66	139	1*9
/stu10/	NA	NA	2*0
/stu11/	68	146	2*1
/stu12/	69	150	2*2
/stu13/	70	154	2*3
/stu14/	71	159	2*4
/stu15/	72	164	2*5
## dec = “.” 指定小数点数;na.strings = “NA” 指定什么样的字符表示值缺少;comment.char 只能设定一个
data1 <- read.table("./women2.txt", header = T, dec = "*", na.strings = c("", "NA", "NO"), comment.char = "\\")
head(data1)

##     name height weight tmp
## 1 /stu1/     58    115 1.1
## 2 /stu2/     59    117 1.2
## 3 /stu3/     60     NA 1.3
## 4 /stu4/     61    123 1.4
## 5 /stu5/     62     NA 1.5
## 6 /stu6/     NA     NA 1.6

sapply(data1[1:6,], is.na)

##       name height weight   tmp
## [1,] FALSE  FALSE  FALSE FALSE
## [2,] FALSE  FALSE  FALSE FALSE
## [3,] FALSE  FALSE   TRUE FALSE
## [4,] FALSE  FALSE  FALSE FALSE
## [5,] FALSE  FALSE   TRUE FALSE
## [6,] FALSE   TRUE   TRUE FALSE

sapply(data1, class)

##      name    height    weight       tmp
##  "factor" "integer" "integer" "numeric"

# quote的设定
data1 <- read.table("./women2.txt", header = T, dec = "*", na.strings = c("", "NA", "NO"), comment.char = "\\", quote = "/", as.is = F)
head(data1)

##   name height weight tmp
## 1 stu1     58    115 1.1
## 2 stu2     59    117 1.2
## 3 stu3     60     "" 1.3
## 4 stu4     61    123 1.4
## 5 stu5     62   <NA> 1.5
## 6 stu6     NA   <NA> 1.6

sapply(data1, class)

##      name    height    weight       tmp
##  "factor" "integer"  "factor" "numeric"
时间: 2024-11-07 10:29:17

R语言中的read.table()的相关文章

R语言中 fitted()和predict()的区别

fitted是拟合值,predict是预测值.模型是基于给定样本的值建立的,在这些给定样本上做预测就是拟合.在新样本上做预测就是预测. 你可以找一组数据试试,结果如何.fit<-lm(weight~height,data=women)fitted(fit) predict(fit,newdata=data.frame(height=90))##将90代入看结果如何这是R in action中的例子 R语言中 fitted()和predict()的区别,布布扣,bubuko.com R语言中 fi

R语言中apply函数

前言 刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么,这是为什么呢?原因在于R的循环操作for和while,都是基于R语言本身来实现的,而向量操作是基于底层的C语言函数实现的,从性能上来看,就会有比较明显的差距了.那么如何使用C的函数来实现向量计算呢,就是要用到apply的家族函数,包括apply, sapply, tapply, mapply, lapply, rapply, vapply, eapply等. 目录

R 语言中 data table 的相关,内存高效的 增量式 data frame

面对的是这样一个问题,不断读入一行一行数据,append到data frame上,如果用dataframe,  rbind() ,可以发现数据大的时候效率明显变低. 原因是 每次bind 都是一次重新整个数据集的重新拷贝 这个链接有人测试了各种方案,似乎给出了最优方案 http://stackoverflow.com/questions/11486369/growing-a-data-frame-in-a-memory-efficient-manner library(data.table) d

数据的标准化与中心化以及R语言中的scale详解(转)

1.数据的中心化 所谓数据的中心化是指数据集中的各项数据减去数据集的均值.例如有数据集1, 2, 3, 6, 3,其均值为3,那么中心化之后的数据集为1-3,2-3,3-3,6-3,3-3,即:-2,-1,0,3,0 2.数据的标准化所谓数据的标准化是指中心化之后的数据在除以数据集的标准差,即数据集中的各项数据减去数据集的均值再除以数据集的标准差.例如有数据集1, 2, 3, 6, 3,其均值为3,其标准差为1.87,那么标准化之后的数据集为(1-3)/1.87,(2-3)/1.87,(3-3)

全面了解R语言中的k-means如何聚类?

下面将在iris数据集上演示k-means聚类的过程. 先从iris数据集中移除Species属性,然后再对数据集iris调用函数kmeans,并将聚类结果存储在变kmeans.result中. 在下面的代码中,簇的数目设置为3. iris2 <- iris iris2$Species <- NULL (kmeans.result <- kmeans(iris2, 3)) 将聚类结果与类标号(Species)进行比较,查看相似的对象是否被划分到同一个簇中. table(iris$Spec

rugarch包与R语言中的garch族模型

来源:http://www.dataguru.cn/article-794-1.html rugarch包是R中用来拟合和检验garch模型的一个包.该包最早在http://rgarch.r-forge.r-project.org上发布,现已发布到CRAN上.简单而言,该包主要包括四个功能: 拟合garch族模型 garch族模型诊断 garch族模型预测 模拟garch序列 拟合序列分布 下面分别说一下. 一.拟合garch族模型 拟合garch族模型分三个步骤:(1)通过ugarchspec

卡尔曼滤波器:用R语言中的KFAS建模时间序列

于时间序列预测,ARIMA等传统模型通常是一种流行的选择.虽然这些模型可以证明具有高度的准确性,但它们有一个主要缺点 - 它们通常不会解释“冲击”或时间序列的突然变化.让我们看看我们如何使用称为卡尔曼滤波器的模型来潜在地缓解这个问题. 时间序列  我们以货币市场为例.货币对可能会有整体上升趋势,然后在抛售期间大幅下跌.传统的时间序列模型不一定能够立即解决这个问题,并且在考虑到趋势的突然变化之前可能需要几个时期. 因此,我们希望使用一个确实能够解释这种冲击的时间序列模型.让我们来看一个称为卡尔曼滤

R语言中aggregate函数

前言 这个函数的功能比较强大,它首先将数据进行分组(按行),然后对每一组数据进行函数统计,最后把结果组合成一个比较nice的表格返回.根据数据对象不同它有三种用法,分别应用于数据框(data.frame).公式(formula)和时间序列(ts): aggregate(x, by, FUN, ..., simplify = TRUE) aggregate(formula, data, FUN, ..., subset, na.action = na.omit) aggregate(x, nfre

R语言中的Theil-Sen回归分析

原文链接:http://tecdat.cn/?p=10080  Theil-Sen估计器是一种在社会科学中不常用 的简单线性回归估计器  .三个步骤: 在数据中所有点之间绘制一条线 计算每条线的斜率 中位数斜率是 回归斜率 用这种方法计算斜率非常可靠.当误差呈正态分布且没有异常值时,斜率与OLS非常相似. 有几种获取截距的方法.如果 关心回归中的截距,那么知道 软件在做什么是很合理的. 当我对异常值和异方差性有担忧时,请在上方针对Theil-Sen进行简单线性回归的评论 . 我进行了一次 模拟,