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 ...
随机推荐
- Win8应用开发 入门篇(三) UX交互导航模式
导航模式(Windows 应用商店应用) 在本文中 分层模式 画布上导航 顶部应用栏 语义式缩放 相关主题 组织 Windows 应用商店应用中的内容,以便用户可以轻松而直观地进行导航.使用正确的 ...
- jQuery属性操作(三)
在阅读attr.remove方法时,看到一些对浏览器兼容性做处理的hooks.接下来看一下这些hooks都做了哪些兼容性处理 1.attrHooks.主要处理IE6-9 input的type属性无法写 ...
- Hive学习之数据去重
insert overwrite table store select t.p_key,t.sort_word from ( select p_key, sort_word , row_number( ...
- libevent安装方法
安装FastDFS之前,先安装libevent工具包,记录一下安装过程 1.检查:ls -al /usr/lib | grep libevent 查看是否已安装,如果已安装且版本低于1.3,则先通过: ...
- 九度OJ小结2
由于安排问题,距离上次小结时间已经过去很久.导致这次小结的内容很多. 本次小结涉及到主要内容如下所示: 基于并查集操作的最小生成树问题(prime算法或者kruskal算法): 最短路径问题(Floy ...
- MySQL大数据量分页性能优化
mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 测试实验 1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from p ...
- vscode 修改(自定义)插件的快捷键
简单的使用了一下vscode,已经感受到了它的强大. 修改插件的快捷键: 1.快捷键command+k 按完之后再按command+s,弹出一个快捷键列表(code->首选项->键盘快捷方 ...
- redmine3.3.0安装问题
1.An error occurred while installing rmagick (2.16.0), and Bundler cannot continue. Make sure that ` ...
- 【BZOJ5094】硬盘检测 概率
[BZOJ5094]硬盘检测 Description 很久很久以前,小Q买了一个大小为n单元的硬盘,并往里随机写入了n个32位无符号整数.因为时间过去太久,硬盘上的容量字眼早已模糊不清,小Q也早已忘记 ...
- python3安装builtwith
>>> import builtwith Traceback (most recent call last): File , in <module> File excep ...