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 ...
随机推荐
- 网络编程之HttpClient类(转)
12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...
- 【Mybatis】Mybatis元素生命周期
一.SqlSessionFactoryBuilder SqlSessionFactoryBuilder是利用XML或者Java编码获得资源来构建SqlSessionFactory的,通过它可以构建多个 ...
- JS - 兼容到ie7的自定义样式的滚动条封装
demo: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- js - 预加载+监听图片资源加载制作进度条
这两天遇到一个新需求:一个一镜到底的h5动画.因为功能的特殊性,就要求我们提前监听页面的静态图片是否全部加载完毕.即处理预加载. 总结下来,下次这种需求需要提前注意以下几点: 一.图片而不是背景图 本 ...
- css3整理--box-shadow
box-shadow语法:(想法:用阴影来做边框,就不会出现动态改变边框宽度而产生的重排问题) 对象选择器{box-shadow:投影方式 X轴偏移量 Y轴偏移量 阴影模糊半径 阴影扩展半径 阴影颜色 ...
- python编程中的if __name__ == 'main': 的作用和原理
在大多数编排得好一点的脚本或者程序里面都有这段if __name__ == 'main': ,虽然一直知道他的作用,但是一直比较模糊,收集资料详细理解之后与打架分享. 1.这段代码的功能 一个pyth ...
- 查看运行中的Java其配置的堆大小
一.背景 有题目中的需求,也不是空穴来风:前一阵给公司搭建了一个持续集成服务器,Jenkins.最近发现,运行一段时间后,就变慢了. 随便一个操作,cpu就飙高了.然后就思考会不会是内存不够用,频繁G ...
- linux指定某非root用户执行开机启动项的方法(gogs git)
以linux指定git用户在linux开机时执行启动gogs git为例: 以root登录linux 执行vi /etc/rc.d/rc.local 在文档末尾添加一行语句:su git -c &qu ...
- Artech的MVC4框架学习——第八章View的呈现
总结:定义在controller中的action方法一般会返回actionResult的对象对请求给予 响应.viewResult是最常见也是最重要的ActionView的一种(p411).view模 ...
- jQuery相同id元素 全部获取问题解决办法
问题:今天在做页面链接的点击效果时,让部分a链接跳转到同一个地址,即使使用$().each()也同样无法获取所有相同id的值. 用以下方法只有第一个a链接点击可以正常跳转 例如: html代码: &l ...