R语言学习——数据框
> #数据框可以包含不同模式(数值型、字符型、逻辑型等)的数据,是R中最常处理的数据结构。数据框可以通过函数data.frame()创建:mydata<-data.frame(coll,col2,col3,...)
> #其中的列向量col1、col2、col3等可以为任何类型(如数值型、字符型或者逻辑型)每一列的名称可由函数names指定。实例如下:
> #创建一个数据框
> patientID<-c(1,2,3,4)
> age<-c(25,34,28,52)
> diabetes<-c("Type1","Type2","Type1","Type1")
> status<-c("Poor","Improved","Excellent","Poor")
> patientdata<-data.frame(patientID,age,diabetes,status)#创建数据框patientdata
> patientdata
patientID age diabetes status
1 1 25 Type1 Poor
2 2 34 Type2 Improved
3 3 28 Type1 Excellent
4 4 52 Type1 Poor
> #每一列数据的模必须唯一,可以将多个模式的不同列放到一起组成数据框。、
> #选取数据框中元素的方式有若干种,可以使用下标记号,也可直接指定列名。实例如下:
> patientdata[1:2]#选取第1、2列数据
patientID age
1 1 25
2 2 34
3 3 28
4 4 52
> patientdata[c("diabetes","status")]
diabetes status
1 Type1 Poor
2 Type2 Improved
3 Type1 Excellent
4 Type1 Poor
> patientdata[2:3,1:2]#选取第2、3行,第1、2列的数据
patientID age
2 2 34
3 3 28
> patientdata$age#记号$用来选取一个给定数据框中的某一特定变量
[1] 25 34 28 52
> #例如,如果想生成糖尿病类型变量diabetes和病情变量status的列联表,可使用如下代码:
> table(patientdata$diabetes,patientdata$status)
Excellent Improved Poor
Type1 1 0 2
Type2 0 1 0
> #每个变量前都键入patientdata$可能会比较麻烦,联合使用函数attach()和detach()或单独使用函数with()可以简化代码。函数attach()可将数据框添加到R的搜索路径中。R遇到一个变量名后,将检查搜索路径中的数据框。上述例子也可使用如下代码实现:
> attach(patientdata)
> table(diabetes,status)
> #以数据框mtcars为例
> summary(mtcars$mpg)#获取每加仑行驶英里数(mpg)变量的描述性统计量
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
> plot(mtcars$mpg,mtcars$disp)#每加仑行驶英里数(mpg)与发动机排量(disp)的散点图

> plot(mtcars$mpg,mtcars$wt)#每加仑行驶英里数(mpg)与车身重量(wt)的散点图

> #以上代码也可以写成如下形式:
> attach(mtcars)#将数据框mtcars添加到R的搜索路径
> summary(mpg)
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
> plot(mpg,disp)

> plot(mpg,wt)

> detach(mtcars)#将数据框mtcars从R的搜索路径中移除
> #需要注意的是当数据框被绑定(attach)前,环境中已经存在了相同的变量时该方法便会有很明显的局限性,例如:
> mpg<-c(25,36,47)
> attach(mtcars)
The following object is masked _by_ .GlobalEnv:
mpg
> plot(mpg,wt)
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
> mpg
[1] 25 36 47
> #因为这种情况下原始对象获得优先权,因此attach()和detach()最好在分析一个单独的数据框,并且不太可能有多个同名对象时使用,任何情况下都应该当心那些告知某个对象已被屏蔽(masked)的警告
> #而with()函数无需担心名称冲突
> with(mtcars,{print(summary(mpg))})
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
> with(mtcars,{print(summary(mpg))
+ plot(mpg,disp)
+ plot(mpg,wt)})
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90


> #使用with(vector,{})时,花括号{}中的语句都是针对所载入的数据框(上述例子为数据框mtcars)执行,因此无需担心名称冲突,如果仅有一条语句(例如summary(mpg)),那么花括号{}也可以省略。但with()函数也有局限性,即赋值仅在次函数的括号内生效。如下代码:
> with(mtcars,{
+ stats<-summary(mpg)
+ stats})
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
> stats
Error: object 'stats' not found
> #那么怎么在with()中创建with()结构以外存在的对象呢,其实,使用特殊赋值符<<-替代标准赋值符<-即可,它可以将对象保存到with()之外的全局环境中。如下代码:
> with(mtcars,{
+ nokeepstats<-summary(mpg)
+ keepstats<<-summary(mpg)
+ nokeepstats
+ keepstats
+ })
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
> nokeepstats
Error: object 'nokeepstats' not found
> keepstats
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
> with(mtcars,{
+ nokeepstats<-summary(mpg)
+ keepstats<<-summary(mpg)
+ nokeepstats
+ })
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
> with(mtcars,{
+ nokeepstats<-summary(mpg)
+ keepstats<<-summary(mpg)
+ keepstats
+ })
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
R语言学习——数据框的更多相关文章
- 用R语言提取数据框中日期对应年份(列表转矩阵)
用R语言提取数据框中日期对应年份(列表转矩阵) 在数据处理中常会遇到要对数据框中的时间做聚类处理,如从"%m/%d/%Y"中提取年份. 对应操作为:拆分成列表——列表转矩阵——利用 ...
- R语言将数据框转成xts
R语言初学者,不怎么会,今天碰到的问题,查了好久才找到,原来如此简单 尼玛,下次再忘记抽自己3巴掌
- 2-7 R语言基础 数据框
#数据框 > df <- data.frame(id=c(1,2,3,4),name=c("a","b","c","d ...
- R语言中数据框的横向合并与纵向合并
#横向合并ID<-c(1,2,3,4)name<-c("Jim","Tony","Lisa","Tom")s ...
- R语言学习——数据合并及绘制密度分布曲线图
setwd("E:/08_cooperation/07_X-lab/06-Crosstalk/Aadapter_primer")# 读取lane01.txt,并对其按列进行相加处理 ...
- R语言中将数据框(data.frame)中字符型数据转化为数值型
as.data.frame(lapply(data,as.numeric))
- R语言为数据框添加列名或行名
1.添加列名 wts=c(1,1,1) names(wts)=c("setosa","versicolor","virginica") 2. ...
- R语言学习笔记1——R语言中的基本对象
R语言,一种自由软件编程语言与操作环境,主要用于统计分析.绘图.数据挖掘.R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发(也因此称为R),现在由“R开发核心 ...
- R语言学习笔记(一)
1.不同的行业对数据集(即表格)的行和列称谓不同,统计学家称其为观测(observation)和变量(variable): 2.R语言存储数据的结构: ①向量:类似于C语言里的一位数组,执行组合功能的 ...
随机推荐
- 带着新人学springboot的应用05(springboot+RabbitMQ 上)
这次就来说说RabbitMQ,这个应该不陌生了,随便一查就知道这个是用来做消息队列的.(注意:这一节很多都是概念的东西,需要操作的比较少) 至于AMQP协议(Advanced Message Queu ...
- Django中的templates(你的HTML页面放哪里)
本文回答Django里面的HTML文件应该怎么放,以及Django是如何查找模板文件的. 到目前为止我们没有使用HTML页面,在之前的说明中所有内容都是写死在程序里的,如果你想改变内容就要修改代码.但 ...
- shell之最常用的服务脚本
任务需求:以最简单的方式管理 /usr/local/php7/sbin/php-fpm -c /usr/local/php7/etc/php.ini 这条命令 包括启动停止重启 使用技术:shell脚 ...
- 【Java基础】【24多线程(上)】
24.01_多线程(多线程的引入)(了解) 1.什么是线程 线程是程序执行的一条路径, 一个进程中可以包含多条线程 多线程并发执行可以提高程序的效率, 可以同时完成多项工作 2.多线程的应用场景 红蜘 ...
- Vim 下的复制/粘贴/剪切/撤销
一 了解 vim 有 12 个粘贴板,分别是 0.1.2.....9.a.“.+:用 :reg 命令可以查看各个粘贴板里的内容.在 vim 中简单用 y 命令只是复制到 "(双引号)粘贴板里 ...
- 使用MaxCompute Java SDK 执行任务卡住了,怎么办?
场景一 用户AA: “亲,用 MaxCompute Java SDK 跑作业,为什么卡住不动了?”me: “有 Logview 吗?发来看下”A: “没有,我用的是SDK,没Logview” 场景二 ...
- 【野草】SQL Server之索引解析(二)
1.堆表 堆表通过IAM连接一起,查询时全表扫描. 1.1 非聚集索引 结构 叶子节点数据结构:行数据结构+Rid(8字节) 中间节点数据结构: (非聚集非唯一索引)行数据结构+Page(4)+2+ ...
- #7 Python代码调试
前言 Python已经学了这么久了,你现在已经长大了,该学会自己调试代码了!相信大家在编写程序过程中会遇到大量的错误信息,我也不例外的啦-遇到这些问题该怎么解决呢?使用最多的方法就是使用print打印 ...
- C# 如何获取Url的host以及是否是http
参考资料:https://sites.google.com/site/netcorenote/asp-net-core/get-scheme-url-host Example there's an g ...
- Android破解——支付宝内购破解方法总结
支付宝破解三种方式: 想学一下支付宝内购的相关知识,但是搜索了论坛,发现但是没有相关的帖子,于是便是打算自己来写一篇总结 一.9000的十六进制代码修改 搜索9000的十六进制,也就是搜索0x2328 ...