r语言read_html函数,R语言之read.table函数(2)
转:
接下来继续看我们的read.table函数。
首先介绍一个非常有用的函数na.strings。na.strings在read.table中默认na.strings=“NA”。
“na”的意思是“not
available”,即“不可用”,在数据分析中我们更愿意称呼它“missing
values”------缺失值。这么一说大家就明白了,它是处理缺失值的。我们在整理录入数据的时候,有一些数据因为各种原因无法调查,称为缺失值。缺失值有时候会用特别的数字表示而不一定空着不填。如在统计某人群男子身高(cm)时,有的人没有记录上,那么可能缺失值会用“999”表示,因为人们是不会长到999cm的。我们录入数据时,这样的数据用999表示,但是并不希望它被计算。此时就可以用na.strings定义它。
我举一个例子:
先读取文件wq,看看是什么样子:
> setwd("E:/Rstore/")
> WQ=read.table("wq.txt",header=T)
> WQ
A B C D
1 12 65 78 98
2 56 89 87 78
3 78 87 56 98
4 98 89 24 56
5 78 87 87 12
6 96 89 33 45
7 23 78 69 65
8 23 98 82 86
9 65 87 12 45
这个是原表。假设我们现在认为数字98是缺失值,那么我们就这么录入:
WQ1=read.table("wq.txt",header=T,na.strings=98)
> WQ1
A B C D
1 12 65 78 NA
2 56 89 87 78
3 78 87 56 NA
4 NA 89 24 56
5 78 87 87 12
6 96 89 33 45
7 23 78 69 65
8 23 NA 82 86
9 65 87 12 45
显然,在R中,定义以后的缺失值在读出时用NA表示。如果你想定义多个缺失值,如在这张表中定义98和78都是缺失值,只需用c()函数将它们结合即可:
WQ2=read.table("wq.txt",header=T,na.strings=c(98,78))
> WQ2
A B C D
1 12 65 NA NA
2 56 89 87 NA
3 NA 87 56 NA
4 NA 89 24 56
5 NA 87 87 12
6 96 89 33 45
7 23 NA 69 65
8 23 NA 82 86
9 65 87 12 45
如果你只想读取数据的前6行,那么就需要另外一个函数nrows,它表示你要读取数据的前n行:
> WQ3=read.table("wq.txt",header=T,nrows=6)
> WQ3
A B C D
1 12 65 78 98
2 56 89 87 78
3 78 87 56 98
4 98 89 24 56
5 78 87 87 12
6 96 89 33 45
这里需要说明的是,变量名不算在所选取范围内。这样是很方便的。它的默认值是nrows=-1,当然,只要你让nrows为负数,它和取默认值是一样的。
相比而言,另一个函数skip函数就不是那么方便了。skip,“跳读”,你可以理解它为“忽略”,默认值是0。
比如从第三行开始读取wq数据,那么需要让skip=2,即跳过(忽略)前两行开始读取数据:
> WQ4=read.table("wq.txt",header=T,skip=2)
> WQ4
X56 X89 X87
X78
1 78 87 56 98
2 98 89 24 56
3 78 87 87 12
4 96 89 33 45
5 23 78 69 65
6 23 98 82 86
7 65 87 12 45
注意,不同于nrows,变量名也被“跳”过去了。因此实际应用时可能需要和col.names合用,代码如下:
>
WQ4=read.table("wq.txt",header=T,skip=2,col.names=c("A","B","C","D"))
> WQ4
A
B C D
1 78 87 56 98
2 98 89 24 56
3 78 87 87 12
4 96 89 33 45
5 23 78 69 65
6 23 98 82 86
7 65 87 12 45
这样,我们不仅得到了原表(WQ)中第3-9行的数据,而且也拥有了每一列的变量名。
check.names,检查变量名。它的默认值是TRUE,它是干什么的呢?即如果你的列变量名有重复,使用check.names=T(或者不写这一项),它会对重复的变量名重新编写变量名。为什么要检查变量名呢?因为通常情况下表中的每一列应该为一种变量,不太可能会有相同的变量名。用法实际上很简单,我们看看例子:
在这张名为wq的表中,第二列和第三列的变量名均为“B”,如果我们直接读取这张表,看看发生什么:
> WQ=read.table("wq.txt",header=T)
> WQ
A B B.1 D
1 12 65 78 98
2 56 89 87 78
3 78 87 56 98
4 98 89 24 56
5 78 87 87 12
6 96 89 33 45
7 23 78 69 65
8 23 98 82 86
9 65 87 12 45
在默认状态或者是check.names=T的情况下,R自动将第二个变量名“B”改成了“B.1”。如果我们使用check.names=F,那么这张表的变量名会原封不动的读出来:
> WQ=read.table("wq.txt",header=T,check.names=F)
> WQ
A B B D
1 12 65 78 98
2 56 89 87 78
3 78 87 56 98
4 98 89 24 56
5 78 87 87 12
6 96 89 33 45
7 23 78 69 65
8 23 98 82 86
9 65 87 12 45
最后再介绍两个函数:fill和blank.lines.skip。
请看这张表:
直接用read.table读这样的表,是出不出来的:
> WQ=read.table("wq.txt",header=T)
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines,
na.strings, :
line 1 did not have 4 elements
R给出的错误提示是第一行没有4个元素。但是有的研究设计(如平衡不完全区组设计)可能会列出这样有空值类型的表格,或者说你的缺失值可能没有用其他数字或方法定义,就是没有填任何标记,那么就可以使用fill函数:
> WQ=read.table("wq.txt",header=T,fill=T)
> WQ
A B C D
1 12 65 78 NA
2 56 89 87 78
3 78 87 56 98
4 98 89 24 56
5 78 87 87 12
6 96 89 33 45
7 23 78 69 65
8 23 98 82 86
9 65 87 12 45
这样,表被读了出来,并且在缺失的地方自动补充了“NA”。
fill的默认值并不是FALSE,而是“fill=!blank.lines.skip”。
“!”是逻辑值“非”。“fill”顾名思义,你可以理解为“填满”,”blank lines
skip”则是跳过空白行。那么这个代码的意思就是fill默认不跳过空白行。所以当表中有空白存在,又没有定义fill=T,就不会被读出来。
如果你的数据是这样的:
当你把它读取的时候,原表空白行并不会被读出来:
> WQ=read.table("wq.txt",header=T)
> WQ
A B C D
1 12 65 78 98
2 56 89 87 78
3 78 87 56 98
4 98 89 24 56
5 78 87 87 12
6 96 89 33 45
7 23 78 69 65
8 23 98 82 86
9 65 87 12 45
原表的空白行没有任何一个元素,所以并没有被读出来,因为默认值blank.lines.skip=T,即跳过空白行。此时就要用blank.lines.skip=F,即不跳过空白行:
> WQ=read.table("wq.txt",header=T,blank.lines.skip=F)
> WQ
A B C D
1 12 65 78 98
2 56 89 87 78
3 78 87 56 98
4 98 89 24 56
5 78 87 87 12
6 96 89 33 45
7 NA NA NA NA
8 23 78 69 65
9 23 98 82 86
这样,读出了空白行并且用“NA”填补。
r语言read_html函数,R语言之read.table函数(2)相关推荐
- R语言使用epiDisplay包的roc.from.table函数可视化临床诊断表格数据对应的ROC曲线并输出新的诊断表、设置cex参数指定AUC值及其文本标签字体的大小
R语言使用epiDisplay包的roc.from.table函数可视化临床诊断表格数据对应的ROC曲线并输出新的诊断表(diagnostic table).输出灵敏度.1-特异度.AUC值等.设置c ...
- R语者小case之——巧用table函数做多变量分类统计
表中记录了两家医院在多年间分娩的产妇使用某种药物的信息. 要求计算出使用药物的产妇的比例,绘制成如下的图. library("readxl") library("ggpl ...
- oracle table 函数使用
PL/SQL表---table()函数用法 /* PL/SQL表---table()函数用法: 利用table()函数,我们可以将PL/SQL返回的结果集代替table. oracle内存表在查询和报 ...
- table()函数的使用,提高查询效率
一.序言 前段时间一直在弄报表,快被这些报表整吐了,然后接触到了Oracle的table()函数.所以今天把table()函数的具体用法整理下,防止下次遇到忘记了.. 利用table()函数,可接收输 ...
- oracle table()函数用法
PL/SQL表---table()函数用法 /* PL/SQL表---table()函数用法: 利用table()函数,我们可以将PL/SQL返回的结果集代替table. oracle内存表在查询和报 ...
- table()函数用法
PL/SQL表---table()函数用法 /* PL/SQL表---table()函数用法: 利用table()函数,我们可以将PL/SQL返回的结果集代替table. oracle内存表在查询和报 ...
- r语言显示找不到read_html,R语言中read.table函数不常见的用法-文本中有#注释符号...
自从开始学习R语言,read.table是较早接触到的函数,因为要读取数据,也因为最开始学习数据分析是用"制表分隔符的txt"文件比较多,xlsm在linux系统中又不太合适,所以 ...
- R语言ggplot2可视化分面图使用facet_wrap函数和facet_grid函数实战
R语言ggplot2可视化分面图使用facet_wrap函数和facet_grid函数实战 目录 R语言ggplot2可视化分面图使用facet_wrap函数和facet_grid函数实战
- R语言使用randomForest包构建随机森林模型(Random forests)、使用importance函数查看特征重要度、使用table函数计算混淆矩阵评估分类模型性能、包外错误估计OOB
R语言使用randomForest包中的randomForest函数构建随机森林模型(Random forests).使用importance函数查看特征重要度.使用table函数计算混淆矩阵评估分类 ...
最新文章
- 分析MAC*.a库文件信息
- lombok @EqualsAndHashCode 注解的影响
- 醉聊产品:产品经理如何做好测试?
- Centos 7安装Postfix用于发送提醒邮件
- java的character用法_Java中Character类的使用方法
- 看了《隐秘的角落》才知道,掉头发有多可怕!10个掉头发最快的专业!快看看你中枪了没有!...
- 值得一谈的鸿蒙2.0,赶紧撸一下hello world
- LeetCode 560. 和为K的子数组(前缀和差分)
- 三年级开始学计算机,三年级学生初识计算机的教学心得
- 剑指Offer之第一个只出现一次的字符
- 通过脚本下派WsusAgent3.0.exe
- Action类一般情况为何要继承ActionSupport
- 接手线上Mysql服务器,我们需要做什么?
- 经典c语言基础代码大全,经典基础实例编程C语言代码.doc
- nodejs 延时函数
- 2010年郑州注册物业管理师培训
- C++primer plus第六版课后编程题答案14.3(仅供参考)
- ORACLE通过dblink同步SDO_ORDINATE_ARRAY_STR的数据
- 迅软信息签约安龙基因医药技术构建医药行业防护体
- Internet Explorer 编程简述(序)
热门文章
- CentOS 7服务器安装brook和bbr加速
- React中如何引入原生JS库
- mcs51C语言指令系统,MCS-51单片机指令系统和汇编语言程序实例
- 聊聊二十七八岁,聊二十一二岁
- IBM DS4300磁盘损坏事故的数据恢复解决思路
- java for 标签,标签用于实现循环功能,类似与Java语句中的for循环。( )
- 主动把自己碎掉的海尔,想借力区块链搭上智能时代列车
- 海航金鹏携手铛铛社交,航旅社群经济引领新航旅时代
- 多核心Linux内核路径优化的不二法门之——多核心平台TCP优化
- 数风流人物,俱在今朝!|2019年度CSDN博客之星TOP10榜单揭晓-智华非常荣幸入选中国博客之星TOP9,非常感谢大家的支持,愿和读者朋友们共同努力,坚持学习,让每个人都能实现自己的梦想!