data.frame和matrix的一些操作
编写脚本的时候经常会涉及到对data.frame或matrix类型数据的操作,比如取指定列、取指定行、排除指定列或行、根据条件取满足条件的列或行等。在R中,这些操作都是可以通过简单的一条语句就能够实现的,非常的简洁优美~
下面就是一个小小的总结:
1. 对data.frame或matrix取指定行
data[i,] #取data中的第i行
data[c(i,j,k),] #取data中的第i,j,k行
取指定列的操作同理可得
2. 对data.frame或matrix删除指定行
data[-i,] #排除data中的第i行
data[c(-i,-j,-k),] #排除data中的第i,j,k行
3. 根据条件取满足条件的行
例如:
假定data为data.frame类型,第一列列名为type,取type为I的所有行:
data[data$type=='I',]
假定data为matrix类型,取第一列为I的所有行:
data[data[,1]=='I',]
*******************************************************************
2:无名称的数据框
2.1建立:
> tmp_frame<-data.frame(c(1:10),c(1),c(10:1));tmp_frame
c.1.10. c.1. c.10.1.
1 1 1 10
2 2 1 9
3 3 1 8
4 4 1 7
5 5 1 6
6 6 1 5
7 7 1 4
8 8 1 3
9 9 1 2
10 10 1 1
默认左侧是列序号,不足的项使用重复项列出(不是0)
2.2数据索引-无名称:
============点==========================
2.2.1 直接读取点数据
> tmp_frame[10,1]
[1] 10
===========行===========================
2.2.2 读取1行并产生数据框
> tmp_frame[3,](一个1行3列的数据框)
c.1.10. c.1. c.10.1.
3 3 1 8
2.2.3 读取n行并产生数据框
> tmp_frame[1:3,](是3行3列的数据框。依据行读取部分)
c.1.10. c.1. c.10.1.
1 1 1 10
2 2 1 9
3 3 1 8
===========列==========================
2.2.4 读取1列并产生数据框
tmp_frame[1](是1行10列的数据框)
c.1.10.
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
2.2.5 读取n列并产生数据框
> tmp_frame[1:2](是10行2列的数据框。依据列读取部分)
c.1.10. c.1.
1 1 1
2 2 1
3 3 1
4 4 1
5 5 1
6 6 1
7 7 1
8 8 1
9 9 1
10 10 1
2.2.6 读取1列并产生向量
> tmp_frame[,1]
[1] 1 2 3 4 5 6 7 8 9 10
(注意tmp_frame[,1:2]和tmp_frame[1:2]一样,均是数据框)
> tmp_frame[1:3,3]
[1] 10 9 8
===========列序号地址================
2.2.7which函数
> which(tmp_frame[,3]==9)(向量tmp_frame[,3]等于9的序号地址—一个则是点数据)
[1] 2
> which(tmp_frame[,2]==1)(向量tmp_frame[,2]等于1的序号地址—多个则是向量)
[1] 1 2 3 4 5 6 7 8 9 10
> tmp_frame[which(tmp_frame[,3]==9),1](行为tmp_frame的第3列等于9的行,列为1 的点数据)—推荐
[1] 2
3有名称的数据框
3.1添加名称
定义时,直接定义列名称—推荐
> tmp_frame<-data.frame(a=c(1:10),b=c(1),k=c(10:1));tmp_frame
a b k
1 1 1 10
2 2 1 9
3 3 1 8
4 4 1 7
5 5 1 6
6 6 1 5
7 7 1 4
8 8 1 3
9 9 1 2
10 10 1 1
定义后,再直接定义列名称
> colnames(tmp_frame)<-c(“a1″,”b1″,”k1″);tmp_frame
a1 b1 k1
1 1 1 10
2 2 1 9
3 3 1 8
4 4 1 7
5 5 1 6
6 6 1 5
7 7 1 4
8 8 1 3
9 9 1 2
10 10 1 1
定义后,再直接定义行名称
> rownames(tmp_frame)<-c(“row1″,”row2″,”row3″,”row4″,”row5″,”row6″,”row7″,”row8″,”row9″,”row10″);tmp_frame
a1 b1 k1
row1 1 1 10
row2 2 1 9
row3 3 1 8
row4 4 1 7
row5 5 1 6
row6 6 1 5
row7 7 1 4
row8 8 1 3
row9 9 1 2
row10 10 1 1
3.2数据索引
3.2.1读取列组成向量—推荐
> tmp_frame$a1
[1] 1 2 3 4 5 6 7 8 9 10
3.2.2读取点数据
> tmp_frame$k1[4](是4行3列的点数据)—推荐
[1] 7
> tmp_frame[4,]$k1(是4行3列的点数据)
[1] 7
4数据框扩展
4.1行扩展
> rbind(tmp_frame,c(2,5,9))
a1 b1 k1
row1 1 1 10
row2 2 1 9
row3 3 1 8
row4 4 1 7
row5 5 1 6
row6 6 1 5
row7 7 1 4
row8 8 1 3
row9 9 1 2
row10 10 1 1
11 2 5 9
> rbind(tmp_frame,row11=c(2,5,9))
a1 b1 k1
row1 1 1 10
row2 2 1 9
row3 3 1 8
row4 4 1 7
row5 5 1 6
row6 6 1 5
row7 7 1 4
row8 8 1 3
row9 9 1 2
row10 10 1 1
row11 2 5 9
4.2列扩展
> cbind(tmp_frame,k11=c(2,5,9,1:7))
a1 b1 k1 k11
row1 1 1 10 2
row2 2 1 9 5
row3 3 1 8 9
row4 4 1 7 1
row5 5 1 6 2
row6 6 1 5 3
row7 7 1 4 4
row8 8 1 3 5
row9 9 1 2 6
row10 10 1 1 7
data.frame和matrix的一些操作的更多相关文章
- R语言Data Frame数据框常用操作
Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...
- 转载:R语言Data Frame数据框常用操作
Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...
- R: data.frame 生成、操作数组。重命名、增、删、改
################################################### 问题:生成.操作数据框 18.4.27 怎么生成数据框 data.frame.,,及其相关操 ...
- R class of subset of matrix and data.frame
a = matrix( c(2, 4, 3, 1, 5, 7), # the data elements nrow=2, # number of rows ...
- 使用R语言-操作data.frame
1 向一个data.frame指定列插入一列新数据 1.1 插入一列到指定位置 y<-1:4 data1 <-data.frame(x1=c(1,3,5,7), x2=c(2,4,6,8) ...
- R语言 data.frame 大全
A data frame is used for storing data tables. It is a list of vectors of equal length. For example, ...
- 替换 data.frame 中的特殊的值
替换空值: foo <- data.frame("day"= c(1, 3, 5, 7), "od" = c(0.1, "#N/A", ...
- R中将list类型数据转换成data.frame型
例如将如下数据转换成data.frame型: l <- replicate( 5, list(sample(letters, 4)), simplify = FALSE ) => 用unl ...
- R vs Python:构建data.frame、读取csv与统计描述
一.Python 数据框就是典型的关系型数据库的数据存储形式,每一行是一条记录,每一列是一个属性,最终构成表格的形式,这是数据科学家必须熟悉的最典型的数据结构. 1.构建数据框 import pand ...
随机推荐
- 【ORACLE 】查询被锁住的对象,并结束其会话
使用Oracle时,发现有表被锁,又不知道是谁(或者哪个程序)锁的,怎么办 ? 两步走: 1.查找出被锁对象的会话ID和序列号 执行如下SQL: -- 查询出被锁对象,并提供 kill 脚本 SELE ...
- sencha touch 自定义事件
需要添加自定义事件可以如下: this.fireEvent('back', this); 此方法第一个参数为你想要监听的事件,之后的参数为你想要传递的参数一般来说第一个参数最好是控件本身. 同理这个方 ...
- jquery中event对象属性与方法小结
JQuery事件中的Event属性是经常性的被忽略的.大多数时间你的确不怎么用它,但有些时候它还是它还是有作用的.如获知触发时用户的环境(是否按了shift etc).每个浏览器对event都有不同的 ...
- linux消息队列编程实例
转自:linux 消息队列实例 前言: 消息队列就是一个消息的链表.可以把消息看作一个记录,具有特定的格式以及特定的优先级.对消息队列有写权限的进程可以向其中按照一定的规则添加新消息:对消息队列有读权 ...
- 9.21 form 和Ajax详解
form 表单 参考连接 : http://www.cnblogs.com/liwenzhou/p/8747872.html
- js跨域请求数据的3种常用的方法
由于js同源策略的影响,当在某一域名下请求其他域名,或者同一域名,不同端口下的url时,就会变成不被允许的跨域请求.那这个时候通常怎么解决呢,对此菜鸟光头我稍作了整理:1.JavaScript 在 ...
- 使用sift特征点进行knn最近邻匹配
#include <opencv2/xfeatures2d/nonfree.hpp> #include <opencv2/features2d/features2d.hpp> ...
- ubuntu16.04下安装文献管理工具mendelay
1.首先下载mendelay的安装包 到官网下载对应版本的安装包,官网地址:Download for Ubuntu and Kubuntu 16.04 LTS, 17.04 and Debian 2. ...
- MyBatis学习(一)一个简单的例子
mybatis入门例子 开发步骤: 1.创建java工程 2.加入jar包(依赖包.驱动包) 3.创建sqlMapConfig.xml 4.创建数据库,数据库表USER_C,插入测试记录 5.创建PO ...
- MySQL InnoDB的存储结构总结
从物理意义上来讲,InnoDB表由共享表空间.日志文件组(redo文件组).表结构定义文件组成.若将innodb_file_per_table设置为on,则系统将为每一个表单独的生成一个table_n ...