R: data.frame 数据框的:查询位置、排序(sort、order)、筛选满足条件的子集。。
###################################################
问题:数据框 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)、筛选满足条件的子集。。的更多相关文章
- R语言Data Frame数据框常用操作
Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...
- 转载:R语言Data Frame数据框常用操作
Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...
- 用R语言提取数据框中日期对应年份(列表转矩阵)
用R语言提取数据框中日期对应年份(列表转矩阵) 在数据处理中常会遇到要对数据框中的时间做聚类处理,如从"%m/%d/%Y"中提取年份. 对应操作为:拆分成列表——列表转矩阵——利用 ...
- R语言中将数据框(data.frame)中字符型数据转化为数值型
as.data.frame(lapply(data,as.numeric))
- R语言学习——数据框
> #数据框可以包含不同模式(数值型.字符型.逻辑型等)的数据,是R中最常处理的数据结构.数据框可以通过函数data.frame()创建:mydata<-data.frame(coll,c ...
- 2-7 R语言基础 数据框
#数据框 > df <- data.frame(id=c(1,2,3,4),name=c("a","b","c","d ...
- R: data.frame 生成、操作数组。重命名、增、删、改
################################################### 问题:生成.操作数据框 18.4.27 怎么生成数据框 data.frame.,,及其相关操 ...
- R Data Frame
https://www.datamentor.io/r-programming/data-frame/ Check if a variable is a data frame or not We ca ...
- R语言中数据框的横向合并与纵向合并
#横向合并ID<-c(1,2,3,4)name<-c("Jim","Tony","Lisa","Tom")s ...
随机推荐
- keeplive使用
一.简介 Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层.第4层和第7层交换机的功能.主要提供loadbalancing( ...
- 性能强劲的Tokyo Cabinet 和 Tokyo Tyrant
Tokyo Cabinet Tokyo Cabinet (简称TC)是Mikio Hirabayashi开发的一种DBM的开发库,其数据文件只有一个,里面存放多个<key,value>的数 ...
- codeforces 460D:Little Victor and Set
Description Little Victor adores the sets theory. Let us remind you that a set is a group of numbers ...
- codevs1199 开车旅行
[问题描述]小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为H i ,城市 ...
- 分享知识-快乐自己:Spring切入点的表达式和通知类型
1.切入点的表达式 表达式格式: execution([修饰符] 返回值类型 包名.类名.方法名(参数)) 其他的代替: <!-- 完全指定一个方法 --> <!-- <aop ...
- PHP+MySQL百万级数据插入的优化
插入分析 MySQL中插入一个记录需要的时间由下列因素组成,其中的数字表示大约比例: 连接:(3) 发送查询给服务器:(2) 分析查询:(2) 插入记录:(1x记录大小) 插入索引:(1x索引) 关闭 ...
- Python3之hashlib模块
Python3之hashlib 简介: 用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法.在python3中已 ...
- Mysql存储过程及调用
存储过程: 存储过程是SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量.有条件执行以及其它强大的 ...
- ajax stream 一边下载二进制数据一边处理
最近有在做 stream 下载,并且边下载 stream 边处理功能.解析二进制的功能.最初参考了 flv.js 的 flv stream 下载处理功能,发现他并没有使用的 XMLHttpReques ...
- python中的排序函数
1.sort() list类型有一个自带的排序函数sort() list.sort(cmp=None, key=None, reverse=False) 参数说明: (1) cmp参数 cmp接受一 ...