R语言 如何获取指定位置的数据

R语言-获取指定位置的数据

R中采用数据对象+[ , ]的方式获取对应位置的数据,根据填入索引参数的不同类型可具体分为:

正整数、负整数、零、空格、逻辑值、名称

> matrix
   [,1] [,2] [,3] [,4] [,5]
[1,]  1  5  9  13  17
[2,]  2  6  10  14  18
[3,]  3  7  11  15  19
[4,]  4  8  12  16  20

1.正整数索引

因为R中的起始位置为1,与一般的编程语言不同,所以这类索引最为常见。

需要注意的是,如果索引中存在重复值,R会继续执行进而重复提取部分值,如:

> matrix[c(1,1),1:5]
   [,1] [,2] [,3] [,4] [,5]
[1,]  1  5  9  13  17
[2,]  1  5  9  13  17

2.负整数索引

使用负整数索引与正整数正好相反,R会返回不包含在负整数对应位置的元素,当需要选取的行或列很多时,用这个索引会更快捷。

需要注意,正整数索引与负整数索引可以同时出现在不同索引位置,但不能同时出现在同一位置,否则将报错,具体如下:

> matrix[c(-1,-1),1]
[1] 2 3 4
> matrix[c(-1,1),1]
Error in matrix[c(-1, 1), 1] : only 0's may be mixed with negative subscripts

3.零索引

零索引的存在说实话并没有什么意义,很有可能是设计师为了防止很多程序员无法避开从0开始计数而经常导致error的一种保护措施而已。使用情况如下:

> matrix[1,0]
integer(0)
> matrix[0,0]
<0 x 0 matrix>

4.空格索引

空格表示提取该索引位置所对应的所有维度,但不写空格效果也一样,具体如下:

> matrix[1,]
[1] 1 5 9 13 17
> matrix[1, ]
[1] 1 5 9 13 17

5.逻辑值索引

当提供的索引位置是一个包含TRUE和FALSE逻辑值的向量,那么R会匹配出索引值为TRUE的列,并取出相应元素。

使用这种方法,需要向量长度与索引位置的维度相同,否则就达不到需要的效果,具体如下:

> matrix[c(T,F,F,F),]
[1] 1 5 9 13 17

这种方式看似笨重,但在特殊情况下作用十分明显

6.名称索引

当被索引的对象有名称属性,就可以采用名称作为索引提取相关元素,这是提取列的常用方法,因为列总会有名称,具体如下:

> colnames(matrix)<-c("a","b","c","d","e")
> matrix[,"b"]
[1] 5 6 7 8

补充:R语言获取特定时间段的数据

获取特定时间段的表格数据方法:

1. 方法一:正则表达式

data <- read.csv('F:/data.csv')
date <- as.Date(data$Date)
#获取2018-3-1到2018-3-10之间的第3-5列数据
subT <- date[(format(date,format = "%Y")=="2018"&as.numeric(format(date,format =
   "%m"))=="3" &as.numeric(format(date,format = "%d"))>=1&as.numeric(format(date,format
   = "%d"))<=10),3:5]
#对2018-3-1到2018-3-10之间第3-5列的数据进行按列求平均值
mean <- apply(subT,2, mean)

2. 方法二:

date1 <- as.POSIXct(paste("2018-3-1","08:00:00"))
date2 <- as.POSIXct(paste("2018-3-1","17:00:00"))
int <- interval(date1, date2)
#获取2018-3-1 08:00:00到2018-3-1 17:00:00之间的第3-5列数据
subT <- data[ymd_hms(data$Date) %within% int,3:5]

注意:

1. within判断数据是否在该时间段之内,其中包括起始时间,不包括末尾时间。

2.paste0(num_year[y],'_',m,'_1') 实现字符串的合并,其中m,num_year[y]为变量。

paste拼接时有空格,paste0无空格

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • R语言数据读取以及数据保存方式

    一.R语言读取文本文件: 1.文件目录操作: getwd() : 返回当前工作目录 setwd("d:/data") 更改工作目录 2.常用的读取指令read read.table() : 读取文本文件 read.csv(): 读取csv文件 如果出现缺失值,read.table()会报错,read.csv()读取时会自动在缺失的位置填补NA 3.灵活的读取指令 scan() : 4.读取固定宽度格式的文件: read.fwf() 文本文档中最后一行的回车符很重要,这是一个类似于停止符

  • R语言中devtools的使用详解

    今天安装r语言devtools包,尝试很多种方法也不能决解,下面这个问题是改变镜像,然后就会可以安装了(3.4.2版本) Warning in install.packages : InternetOpenUrl failed: '无法解析服务器的名称或地址' Warning in install.packages : InternetOpenUrl failed: '不能连接到吊销服务器,或者未能获得最终响应.' Warning in install.packages : InternetOp

  • R语言绘制坐标 保存图片的操作

    绘制坐标 有时候我们绘制坐标的时候,需要改变坐标轴的定义,我们以日期为横坐标绘制时间序列为例讲解 先列举简单的例子: rnorm(n, mean = 0, sd = 1) n 为产生随机值个数(长度),mean 是平均数, sd 是标准差 . > rnorm(10,1,sd = 2) [1] 1.98984356 -1.93403191 -1.15324772 0.84623524 -0.73123833 -2.77682328 -0.74316683 -0.02913632 -0.800634

  • R语言读取csv文件出错的解决方案

    今天在用R语言读取.csv文件的时候报错 Error in make.names(col.names, unique = TRUE) : invalid multibyte string 5 上网查了很久才知道原来是格式的问题(保存文件格式的编码不正确) 重新保存正确的格式就没有问题了~ 补充:R语言读取csv文件,第一列列名出现乱码的解决方法 在利用R语言读取csv文件时,第一列列名总是出现乱码,代码如下: setwd("E:\2.Model\4. Simulation") #设定文

  • 基于R语言中的各种更新方法分享

    宏包的更新 卸载package remove.packages("mypackage") 查看的version R.version 或者 getRversion() 查看package的version packageVersion("mypackage") 更新包 update.packages() 或者 update.packages(ask = FALSE) 删除包 remove.packages("mypackage") R软件的更新 in

  • R语言 实现将两张图放在同一张画布

    我就废话不多说了,大家还是直接看代码吧~ ts1<-ts(test_data$tot_num,frequency = 365,start=c(2017,11,21)) plot(ts1,col='blue',lty='dotted',ylim=c(50,550)) par(new=TRUE) ts2<-ts(test_data$pre_result,frequency = 365,start=c(2017,11,21)) plot(ts2,col='red',ylim=c(50,550)) 好

  • 基于R语言xlsx安装遇到的问题及解决方案

    1.java环境的安装,如果java安装的是64位使用R软件一定要是64位,如果使用32位会报错,版本一定要对应. 2.安装顺序要是install.packages("rJava") install.packages("xlsxjars") install.packages("xlsx") 3.如果之前不是安装2中那样的顺序安装,虽然rJava或者xlsxjars包都下载了,但是就是安装不上xlsx,这时候可以选择到R安装目录下的library中

  • R语言之xlsx包读写Excel数据的操作

    感谢Adrian A. Drǎgulescu发布的xlsx包 xlsx包提供了必要的工具来与Excel 2007进行交互.用户可以阅读和编写xlsx,并可以通过设置数据格式.字体.颜色和边框来控制电子表格的外观.设置打印区域,缩放控制,创建分割和冻结面板,添加页眉和页脚.包使用Apache POI项目中的java库.本篇主要分享利用xlsx工具包在读写xlsx过程中所碰到的问题及解决办法. 工具准备 强烈建议大家使用RStudio这个IDE,它是以今为止对R语言最友好的一个IDE之一,而且使用很

  • R语言 如何获取指定位置的数据

    R语言-获取指定位置的数据 R中采用数据对象+[ , ]的方式获取对应位置的数据,根据填入索引参数的不同类型可具体分为: 正整数.负整数.零.空格.逻辑值.名称 > matrix [,1] [,2] [,3] [,4] [,5] [1,] 1 5 9 13 17 [2,] 2 6 10 14 18 [3,] 3 7 11 15 19 [4,] 4 8 12 16 20 1.正整数索引 因为R中的起始位置为1,与一般的编程语言不同,所以这类索引最为常见. 需要注意的是,如果索引中存在重复值,R会继

  • selenium与xpath之获取指定位置的元素的实现

    今天有点新的与大家分享,关于selenium与xpath之间爬数据获取指定位置的时候,方式不一样哦. 详情可以看我的代码,以b站来看好吧: 查看这href元素,如果是xpath,肯定这么写是没有问题的: i.find_element_by_xpath('./a/@href') 但你再selenium里面这样写会报错,所以要改成这样 i.find_element_by_xpath('./a').get_attribute('href') 这样方可正确 这是一个小案例,关于爬取b站音乐视频,但我的技

  • R语言 如何删除指定变量或对象

    R语言中删除指定变量或对象,可以直接删除某名字的变量或对象,也可以删除以字符串形式表示的变量和对象. 例如: 1.直接删除 >a<-c(1,2,3) >rm(a) 2.以字符串形式的方式删除 >a<-c(1,2,3) >rm('a') 3.删除不再需要的对象 在使用R语言的过程中,除了要保留特定的对象外,其他的对象不再需要 >a<-ls() > rm(list=a[which(a!='c2' & a !='m2' & a !='cpu1

  • java 实现获取指定位置后的第一个数字

    目录 获取指定位置后的第一个数字 环境 场景 代码 获取一串数字中每一位数的小技巧 获取指定位置后的第一个数字 环境 java:1.7 场景 今天遇到这么一个需求: 10转增7.5股派1.5元(含税) 10派1.5元(含税) 不分配不转增 10转增3股 10派1.34元(含税) 10送2转增8股派0.3元 10送2.5转增1.5股 10送2股 会有类似上面的字符串,需要根据“送”,“增”和“派”来把后面的数字给切出来:再进行拼接. 比如: 字符串为“10送2转增8股派0.3元”,根据“送”来切,

  • R语言求一行(列表、list)数据的平均数操作

    R语言求一个列表的平均数可以使用mean() : mean英文意思有平均数的含义 x=c(1,3,5,7,9) max(x) #这样即可求得平均数为 : 5 假如读取过一个csv文件之后,要求其中一行数据中指定某个区间内的平均数可以使用rowMeans() data = read.csv("input.csv",sep=",",header=T) rowMeans(data[10:17]) 补充:R语言-数据框分组求平均值 [技术关键] 1.从excel把数据读到数

  • R语言-如何读取前n行数据

    通常我们读取文件时都会读取全部的文件然后再进行操作,但是当读取的数据量很大是读取的时间会很长,而且占用RAM,对于写测试代码有点不方便. 所以只读取前n行数据是一个挺不错的函数 ##file:读取文件路径 ##n:读取的前n行 ##header:是否有标题行 readfile<-function(file, n=1000, header=T){ pt <- file(file, "r") name <- NULL if(header){ name <- strs

  • R语言使用cgdsr包获取TCGA数据示例详解

    目录 TCGA数据源 TCGA数据库探索工具 查看任意数据集的样本列表方式 选定数据形式及样本列表后获取感兴趣基因的信息,下载mRNA数据 选定样本列表获取临床信息 综合性获取 下载mRNA数据 获取病例列表的临床数据 从cBioPortal下载点突变信息 从cBioPortal下载拷贝数变异数据 把拷贝数及点突变信息结合画热图 TCGA数据源 众所周知,TCGA数据库是目前最综合全面的癌症病人相关组学数据库,包括的测序数据有: DNA Sequencing miRNA Sequencing P

  • R语言的数据输入深入讲解

    既然了解了R语言的基本数据类型,那么如何将庞大的数据送入R语言进行处理呢?送入的数据又是如何在R语言中进行存储的呢?处理这些数据的方法又有那些呢?下面我们一起来探讨一下. 首先,数据输入最直接最直观的方法就是键盘输入,在上面几篇都已经讲到,利用c创建向量,利用matrix创建矩阵,利用data.frame创建数据框等,但是我们处理的数据往往比较多,键盘输入在面对如此庞大的数据时显然不现实,当然你可以花费好几天来输入数据而且保证不出错除外,而且待处理的一般都存储在Excel,网页,数据库其他中介中

  • 在 javascript 中如何快速获取数组指定位置的元素

    目录 前言 数组的 at() 方法 前言 在 JavaScript 中如果我们需要获取一个数组指定位置的元素,通常情况下,我们一般采用以下方法: 1.通过下标直接获取指定元素:arr[index], index 为非负数. let arr = [1, 4, 5, 8, 10] // 获取数组的第一个元素 let num1 = arr[0] // 获取数组的最后一个元素 let num2 = arr[arr.length - 1] // 获取数组的倒数第二个元素 let num3 = arr[ar

随机推荐