溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在R語言中使用篩選數(shù)據(jù)

發(fā)布時間:2021-04-30 15:37:14 來源:億速云 閱讀:3412 作者:Leah 欄目:開發(fā)技術(shù)

這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)怎么在R語言中使用篩選數(shù)據(jù),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

什么是R語言

R語言是用于統(tǒng)計分析、繪圖的語言和操作環(huán)境,屬于GNU系統(tǒng)的一個自由、免費、源代碼開放的軟件,它是一個用于統(tǒng)計計算和統(tǒng)計制圖的優(yōu)秀工具。

match

match:匹配兩個向量,返回x中存在的返回索引或TRUE、FALSE

match函數(shù)使用格式有如下兩種:

第一種方便設(shè)置參數(shù),返回x中元素在table中的位置

match(x, table, nomatch = NA_integer_, incomparables = NULL)

第二種簡潔,返回x中每個元素在table中是否存在

x %in% table

參數(shù)詳解

x: 向量, 要匹配的值;

table: 向量, 被匹配的值;

nomatch: 沒匹配上的返回值, 必須是整數(shù);

incomparables: 指定不能用來匹配的值.

match函數(shù)是一個完全匹配函數(shù), 當兩個元素類型不一樣時, 如果進行類型轉(zhuǎn)換后匹配得上的話, 則仍可匹配, 可看下例.

匹配上且返回位置

match(c(1, "TRUE"), c(T, 0, "1"))

返回3 1,即1位于表中的3號位,TRUE位于1號位,且T和TRUE可匹配成功

c(1, "TRUE", F) %in% c(T, 0, "1")

返回TRUE TRUE FALSE,表示每個元素在table中是否存在

pmatch

pmatch函數(shù)是一個部分匹配函數(shù), 依次從x里面挑出元素, 對照table進行匹配, 若匹配上則剔除匹配上的值, 不再參與下次匹配, duplicate.ok可設(shè)置是否剔除; 對于某一個元素,

匹配一共分成三步:

1、如果可以完全匹配, 則認為匹配上了, 返回table中的位置;

2、不滿足上述條件, 如果是唯一部分匹配, 則返回table中的位置;

3、不滿足上述條件, 則認為沒有值與其匹配上.

pmatch函數(shù)的格式

pmatch(x, table, nomatch = NA_integer_, duplicates.ok = FALSE)

x: 向量, 要匹配的值;

table: 向量, 被匹配的值;

nomatch: 沒匹配上的返回值, 必須是整數(shù);

duplicates.ok: table里面的元素是否可以適用多次.

默認不允許重復(fù)使用table中元素,返回位置1 2 3

pmatch(rep(1, 3), rep(1, 5))

允許重復(fù),返回位置1 1 1

pmatch(rep(1, 3), rep(1, 5), duplicates.ok = TRUE)

補充:R語言實例-數(shù)據(jù)過濾

1、問題

一組數(shù)據(jù),變量有40個,就是40列。

我要做數(shù)據(jù)篩選。

1.第一列中包含語段"a11","a12","b23"。請注意是包含,實際不存在“a11”,往往是“a1120”之類的信息

2.第二列中不包含“美國”、“日本”等信息。請注意,也是不包含,而不是不等于。

請問具體的R語言語句應(yīng)該怎么寫?

2、解決

假設(shè)樓主的數(shù)據(jù)為一數(shù)據(jù)框,名字為“testdat”,第一列名"a",第二列名"b",則過濾語句為:

result<-subset(testdat,grepl("a11|a12|b23",testdat$a) & !grepl("美國|日本",testdat$b))

3、注意

grep()函數(shù)返回的是匹配元素的索引,grepl()返回的是匹配或不匹配的邏輯值:

grep(value = FALSE) returns a vector of the indices of the elements of x that yielded a match (or not, for invert = TRUE. This will be an integer vector unless the input is a long vector
grepl returns a logical vector (match or not for each element of x).

上述就是小編為大家分享的怎么在R語言中使用篩選數(shù)據(jù)了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI