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 ...
随机推荐
- IT零起步-CentOS6.4部署OpenVPN服务器
OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,实现二/三层的基于隧道的VPN.最早由James Yonan编写.OpenVPN允许创建的VPN使用公开密钥.数字证书.或者用户名/密码来进行 ...
- java框架---->commonmark的使用(一)
commonmark-java是一个Markdown 解析器,一个基于CommonMark规范解析和渲染Markdown文本的Java库.偶尔要回头看看,否则永远都在追寻,而不知道自己失去了什么. c ...
- vue 项目要使用的库
1.Stylus是一个CSS预处理器. npm install stylus --save-dev npm install stylus-loader --save-dev 使用 <style ...
- 23种设计模式之抽象工厂(Abstract Factory)
抽象工厂模式又称为Kit模式,属于对象创建型模式.抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类.在抽象工厂模 ...
- [工具] TreeSizeFree 查看每个文件夹的大小
下载 URL :http://www.jam-software.com/treesize_free/ TreeSize Free这个软件可以非常简单方便的查看到每个文件夹的大小,而目录树的查看方式则让 ...
- nginx中location、rewrite用法总结
一.location用法总结 location可以把不同方式的请求,定位到不同的处理方式上. 1.location的用法 location ~* /js/.*/\.js 以 = 开头,表示精确匹配:如 ...
- Docker镜像制作
使用docker原始源为centos制作一个nginx镜像 pull一个centos镜像 docker pull centos 运行进入容器 docker run -it centos 容器内安装wg ...
- URL长度过长的问题
最近项目中很多跨域的问题,有时候跨域要传递很多参数,甚至有时候要传递整个对象,处理的方法是把对象转换成JSON形式的字符串再传递.此时该JSON字符串就比较长,作为参数附加到URL后面,URL就会变得 ...
- windows10下笔记本电脑外接显示器设置
笔记本屏幕小,故外接一个显示器,方便使用. 我的电脑没有VGA接口,有HDMI接口,所以我买了一个HDMI到VGA接口转换器. 直接把外界显示器安装到笔记电脑上,如下图所示 接下来是屏幕设置 打开系统 ...
- ZOJ 3780 - Paint the Grid Again - [模拟][第11届浙江省赛E题]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3780 Time Limit: 2 Seconds Me ...