###################################################

问题:数据框 data.frame 查、排序等,   18.4.27

怎么对数据框 data.frame实施 查询位置、查询满足条件的个案数、、排序、 ???

解决方案:

#查询位置

weizhi <- which(iris$Sepal.Length >= 6.9)   #返回一个向量,显示的是所有 >=6.9的行的行号

max(iris$Sepal.Length)    #[1] 7.9

which(iris$Sepal.Length == max(iris$Sepal.Length))   #[1] 132

which(iris$Species == "setosa" & iris$Sepal.Length >= 5.1)   #which 返回满足其内条件的元素的位置。

x[x==3] <- 25;x    #将x中等于3的元素值变为25

x[x=1] <- 12;x    #将x的第1个元素数值变为12

which.max(a)    # 找出最大元素的下标

which.min(a)    # 找出大小的元素下标

which(a==2)    # 等于2的元素的下标

which(a>5)     # 大于5的元素的下标

a[which.max(a)]    # 找出最大的元素

a[which(a>5)]    # 所有的值大于5的元素

#查询满足条件的个案数

length(which(iris$Species == "setosa" & iris$Sepal.Length >= 5.1))

sum(iris$Sepal.Length >= 6)    #统计个数,统计 iris$Sepal.Length 中大于等于6的数有多少个

#排序

#order();   #输出原行号,按照要求排序后的向量  order返回的是排序后的索引。

order(iris$Sepal.Length)    #[1]  9  4  7  3  2 10  5  8  1  6 ;返回原来的行号按照iris$Sepal.Length排序后的向量

inew = iris[order(iris$Sepal.Length),]   #由于要对行排序,所以条件要写在 中括号内 行的位置。

inew2 = iris[order(iris$Sepal.Length,-iris2$Sepal.Width),]  #默认升序  本例按iris$Sepal.Length升序,按iris$Sepal.Width降序。

#sort();   #直接输出排序后的结果。

讨论扩展:

另请参阅:

###################################################

问题:筛选子集(行子集)   18.4.24

根据 data.frame 中某列,如何筛选满足条件的行,组成一个子集

解决方案:

cond <-  iris$Species == "setosa" & iris$Sepal.Length >= 5.1   #筛选条件,返回一个与 iris$Species 长度相同的布尔向量。满足条件的为TRUE。

# 和&  或|  不等于!=  大于>  小于< ,自由组合      #如果筛选对象是因子变量,需要带引号    == “”

筛选子集 法一:用 subset 选子集

iris_setosa1 <- subset(iris,cond);

iris_setosa1 <- subset(iris,cond,select = c(1:3));   #select 用来选择 “只取select内的列” 。

iris.del.col2 <- subset(iris,cond,select = -Sepal.Width)

iris.del.col2 <- subset(iris,cond,select = c(-Sepal.Width,-Petal.Width))    #以下均可:select = c(Sepal.Width,Petal.Width)  select = c(Sepal.Width,5)

筛选子集 法二:

iris_setosa2 <- iris[cond,];

newdata <- iris[which(cond),c(1,2,5)]   #选择满足条件的行和列,一并生成新变量

讨论扩展:

对列筛选:

subset(dfrm,select=c(colname1,colname2,...,colnames),subset = (temp));   #同时实现对行、列的筛选。。内部subset对行进行筛选。

student[which(student$Gender==”F”),”Age”]     #筛选后,只取“Age列”,条件得到一个布尔向量:FALSE FALSE  TRUE,然后使用which函数可以将布尔向量中TRUE的Index返回,

iris.Species2 = iris[iris$Species == "setosa",]    #等价,更常用。和& 或| 不等于!= 大于> 小于< ,自由组合

#如果筛选对象是因子变量,需要带引号 == “”

newdata <- iris[which(iris$Species =='setosa' & iris$Sepal.Length > 5.0),c(1,2,5)]

iris_6 <- subset(iris,iris$Sepal.Length >6 | iris$Sepal.Width>4,select = c(1:3))

另请参阅:

R: data.frame 数据框的:查询位置、排序(sort、order)、筛选满足条件的子集。。的更多相关文章

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

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

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

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

  3. 用R语言提取数据框中日期对应年份(列表转矩阵)

    用R语言提取数据框中日期对应年份(列表转矩阵) 在数据处理中常会遇到要对数据框中的时间做聚类处理,如从"%m/%d/%Y"中提取年份. 对应操作为:拆分成列表——列表转矩阵——利用 ...

  4. R语言中将数据框(data.frame)中字符型数据转化为数值型

    as.data.frame(lapply(data,as.numeric))

  5. R语言学习——数据框

    > #数据框可以包含不同模式(数值型.字符型.逻辑型等)的数据,是R中最常处理的数据结构.数据框可以通过函数data.frame()创建:mydata<-data.frame(coll,c ...

  6. 2-7 R语言基础 数据框

    #数据框 > df <- data.frame(id=c(1,2,3,4),name=c("a","b","c","d ...

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

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

  8. R Data Frame

    https://www.datamentor.io/r-programming/data-frame/ Check if a variable is a data frame or not We ca ...

  9. R语言中数据框的横向合并与纵向合并

    #横向合并ID<-c(1,2,3,4)name<-c("Jim","Tony","Lisa","Tom")s ...

随机推荐

  1. c的详细学习(3)数据的输入输出

    c语言没有专门的数据输入输出语句,而是通过调用系统提供的的标准输入/输出库函数来实现数据的输入和输出.     (1)数据的输出: 注意:在使用标准的输入输出库函数时,使用编译预处理命令“#inclu ...

  2. 【leetcode刷题笔记】Implement strStr()

    Implement strStr(). Returns a pointer to the first occurrence of needle in haystack, or null if need ...

  3. python正则-- re模块

    匹配数字相关'.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行'^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r" ...

  4. C++的动态库和静态库(dll)

    一,在VS里面 新建项目->Visual C++ -> win32 控制台应用程序 -> 填写项目名称->下一步选择 dll : 二,自动生成的文件如图: 以项目名称生成的My ...

  5. 解决ul里最后一个li的margin问题

    在html+css布局里ul>li挺常用的,在群里(WEB前端开发 458732443)总有新手问怎么解决li的最后一个margin值的问题.下面介绍一下,大神请不要拍砖. 先看两个demo,你 ...

  6. 算法(Algorithms)第4版 练习 1.5.8

    假设原id数组: 0 1 1 4 4 8 6 1 8 0 输入p = 5, q = 7 则输出结果会出错,最终为: 0 1 1 4 4 1 6 1 8 0 因为当id[p](id[5] = 8)被赋值 ...

  7. Python基础之字符串操作

    字符串的常用操作包括但不限于以下操作: 字符串的替换.删除.截取.复制.连接.比较.查找.分割等 这里将对字符串的内置操作方法进行总结归纳,重点是以示例的方式进行展示. 使用type获取创建对象的类 ...

  8. Mybatis异常_04_mapper.xml中不能使用小于号<、大于号>

    一.解决方法: 1.< 2.<![CDATA[ < ]]> 将小于号替换为上述代码即可. 二.参考资料 1.mybatis配置中sql莫名其妙报错,多半是条件中小于符号捣的鬼

  9. html5 tab横向滚动,无滚动条(transform:translate)

    html5 横向滚动,用到了 touchstart.touchmove.touchend 控制修改transform:translate属性;[手机端或者浏览器模拟手机模式才有效果] [转载请注明出处 ...

  10. BEC listen and translation exercise 34

    In a busy classroom filled with nearly 20 children, Sabriye Tenberken lectures her pupils to always ...