R語言 如何獲取指定位置的數(shù)據(jù)
R語言-獲取指定位置的數(shù)據(jù)
R中采用數(shù)據(jù)對(duì)象+[ , ]的方式獲取對(duì)應(yīng)位置的數(shù)據(jù),根據(jù)填入索引參數(shù)的不同類型可具體分為:
正整數(shù)、負(fù)整數(shù)、零、空格、邏輯值、名稱
> 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.正整數(shù)索引
因?yàn)镽中的起始位置為1,與一般的編程語言不同,所以這類索引最為常見。
需要注意的是,如果索引中存在重復(fù)值,R會(huì)繼續(xù)執(zhí)行進(jìn)而重復(fù)提取部分值,如:
> matrix[c(1,1),1:5] [,1] [,2] [,3] [,4] [,5] [1,] 1 5 9 13 17 [2,] 1 5 9 13 17
2.負(fù)整數(shù)索引
使用負(fù)整數(shù)索引與正整數(shù)正好相反,R會(huì)返回不包含在負(fù)整數(shù)對(duì)應(yīng)位置的元素,當(dāng)需要選取的行或列很多時(shí),用這個(gè)索引會(huì)更快捷。
需要注意,正整數(shù)索引與負(fù)整數(shù)索引可以同時(shí)出現(xiàn)在不同索引位置,但不能同時(shí)出現(xiàn)在同一位置,否則將報(bào)錯(cuò),具體如下:
> 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.零索引
零索引的存在說實(shí)話并沒有什么意義,很有可能是設(shè)計(jì)師為了防止很多程序員無法避開從0開始計(jì)數(shù)而經(jīng)常導(dǎo)致error的一種保護(hù)措施而已。使用情況如下:
> matrix[1,0] integer(0) > matrix[0,0] <0 x 0 matrix>
4.空格索引
空格表示提取該索引位置所對(duì)應(yīng)的所有維度,但不寫空格效果也一樣,具體如下:
> matrix[1,] [1] 1 5 9 13 17 > matrix[1, ] [1] 1 5 9 13 17
5.邏輯值索引
當(dāng)提供的索引位置是一個(gè)包含TRUE和FALSE邏輯值的向量,那么R會(huì)匹配出索引值為TRUE的列,并取出相應(yīng)元素。
使用這種方法,需要向量長(zhǎng)度與索引位置的維度相同,否則就達(dá)不到需要的效果,具體如下:
> matrix[c(T,F,F,F),] [1] 1 5 9 13 17
這種方式看似笨重,但在特殊情況下作用十分明顯
6.名稱索引
當(dāng)被索引的對(duì)象有名稱屬性,就可以采用名稱作為索引提取相關(guān)元素,這是提取列的常用方法,因?yàn)榱锌倳?huì)有名稱,具體如下:
> colnames(matrix)<-c("a","b","c","d","e") > matrix[,"b"] [1] 5 6 7 8
補(bǔ)充:R語言獲取特定時(shí)間段的數(shù)據(jù)
獲取特定時(shí)間段的表格數(shù)據(jù)方法:
1. 方法一:正則表達(dá)式
data <- read.csv('F:/data.csv') date <- as.Date(data$Date) #獲取2018-3-1到2018-3-10之間的第3-5列數(shù)據(jù) 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] #對(duì)2018-3-1到2018-3-10之間第3-5列的數(shù)據(jù)進(jìn)行按列求平均值 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列數(shù)據(jù) subT <- data[ymd_hms(data$Date) %within% int,3:5]
注意:
1. within判斷數(shù)據(jù)是否在該時(shí)間段之內(nèi),其中包括起始時(shí)間,不包括末尾時(shí)間。
2.paste0(num_year[y],'_',m,'_1') 實(shí)現(xiàn)字符串的合并,其中m,num_year[y]為變量。
paste拼接時(shí)有空格,paste0無空格
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
在R語言中實(shí)現(xiàn)Logistic邏輯回歸的操作
這篇文章主要介紹了在R語言中實(shí)現(xiàn)Logistic邏輯回歸的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04R語言數(shù)據(jù)可視化ggplot添加左右y軸繪制天貓雙十一銷售圖
本篇文章主要介紹如何在R中,使用ggplot2包在一個(gè)圖像上添加左右兩個(gè) y 軸刻度,并在同一個(gè)圖像上繪制兩個(gè)完全不一樣的統(tǒng)計(jì)圖,有需要的朋友可以借鑒參考下2021-11-11R語言中對(duì)數(shù)據(jù)框的列名重命名的實(shí)現(xiàn)
這篇文章主要介紹了R語言中對(duì)數(shù)據(jù)框的列名重命名的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03R包c(diǎn)lusterProfiler如何安裝成功(新手必看!)
最近在我以為ClusterProfiler已經(jīng)安裝好的時(shí)候,又遇到了一些問題,所以這篇文章主要給大家介紹了關(guān)于R包c(diǎn)lusterProfiler如何安裝成功的相關(guān)資料,需要的朋友可以參考下2023-02-02