编写脚本的时候经常会涉及到对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的一些操作的更多相关文章

  1. R语言Data Frame数据框常用操作

    Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...

  2. 转载:R语言Data Frame数据框常用操作

    Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...

  3. R: data.frame 生成、操作数组。重命名、增、删、改

    ################################################### 问题:生成.操作数据框   18.4.27 怎么生成数据框 data.frame.,,及其相关操 ...

  4. 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   ...

  5. 使用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) ...

  6. R语言 data.frame 大全

    A data frame is used for storing data tables. It is a list of vectors of equal length. For example, ...

  7. 替换 data.frame 中的特殊的值

    替换空值: foo <- data.frame("day"= c(1, 3, 5, 7), "od" = c(0.1, "#N/A", ...

  8. R中将list类型数据转换成data.frame型

    例如将如下数据转换成data.frame型: l <- replicate( 5, list(sample(letters, 4)), simplify = FALSE ) => 用unl ...

  9. R vs Python:构建data.frame、读取csv与统计描述

    一.Python 数据框就是典型的关系型数据库的数据存储形式,每一行是一条记录,每一列是一个属性,最终构成表格的形式,这是数据科学家必须熟悉的最典型的数据结构. 1.构建数据框 import pand ...

随机推荐

  1. JUnit —— TestSuite 的使用

    首先说一下,suite ,中文是 一套,一组 的意思. 那么,TestSuite,顾名思义,就是用来运行一组测试的. 如何使用呢 ? 假设有个这样的测试类 StudentDAOTest ,代码如下: ...

  2. scanf printf sprintf fprintf

    都是C语言中的函数,但C++保留了这些函数,在头文件iostream中声明了. 1 scanf(格式控制,输出列表) printf (格式控制,输出列表) 举例: #include <iostr ...

  3. 本版本延续MVC中的统一验证机制~续的这篇文章,本篇主要是对验证基类的扩展和改善(转)

    本版本延续MVC中的统一验证机制~续的这篇文章,本篇主要是对验证基类的扩展和改善 namespace Web.Mvc.Extensions { #region 验证基类 /// <summary ...

  4. Python Tkinter Text控件

    原文地址: http://blog.csdn.net/bemorequiet/article/details/54743889 这篇博客主要是简单的说一下Tkinter中的Text控件的相关知识. T ...

  5. [转载]几个有趣的Linux命令

      本文给大家介绍几个有趣的Linux命令. 1. pv 命令 有时候我们在电影屏幕上看到一些字幕一个个匀速显示出来,像有人在边敲键盘,边显示一样.Linux上的pv命令可以实现这种效果. 默认情况下 ...

  6. Sphinx以及coreseek的安装及使用

    检索结构 php -> sphinx -> mysql 非结构化数据又叫全文数据,非固定长度字段例如文章标题搜索这类适用sphinx 全文数据搜索: 1 顺序扫描 : 如like查找 2 ...

  7. TypeScript中处理大数字(会丢失后面部分数字)

    为啥要弄这玩意? 最近做数值游戏,需要用到很大的数字,在前端大数字会自动变成e的科学计数法. 有啥问题? 问题: 1. 在传递给服务端时,服务端因为不能处理大数字(怎么就处理不了?!),就想要我传字符 ...

  8. C#取得Web程序和非Web程序的根目录的N种取法

    取得控制台应用程序的根目录方法方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法2.AppDomain.CurrentDomain.BaseDi ...

  9. 【CF900D】Unusual Sequences 容斥(莫比乌斯反演)

    [CF900D]Unusual Sequences 题意:定义正整数序列$a_1,a_2...a_n$是合法的,当且仅当$gcd(a_1,a_2...a_n)=x$且$a_1+a_2+...+a_n= ...

  10. 在pycharm中运行nose测试框架

    之前一直在pydev上或命令行上运行nosetests. pycharm上如果运行nosetests,在看了管网后,总结果如下: 全新的pycharm: 填加完成后,打开你要的脚本,运行,即可以以no ...