簡體   English   中英

R:從數據框中提取特定的行和列

[英]R: extracting specific rows and columns from dataframe

我正在嘗試簡化一種腳本,該腳本用於從大型數據框中提取特定的行和列,並將其提取到單獨的腳本中,以便隨后繪制圖形。 到目前為止,我一直在使用for循環來一次取出位,然后將它們一起rbind() ,但是我認為必須有一個更好的解決方案。 希望我可以通過一個有代表性的例子來說明我一直在嘗試做的事情:

a <- rep(1:8, each=40)
b <- rep(rep(1:4, each=5), times=16)
c <- runif(320)
d <- runif(320)

df <- data.frame(a,b,c,d)

我想做的是將這些列用於ab特定值。 因此,我想出了例如a等於1或2的行,我可以這樣做:

extract.a = c(1,2)
extractcolumns = c("a", "b", "c", "d")
extracted <- df[a == extract.a, extractcolumns]

(我留在extractcolumns位,即使我並不需要它在這種情況下,但在現實情況下,我想帶5列出的17)。 問題是這種工作方式,但僅占用其他所有行,例如,如果我進行更改,

extract.a = c(1,2,4)

然后,每隔第三行。 我不確定它到底在做什么,所以我堅持如何修復它。 我最終想做的是選擇行,其中a是多個值之一, b也是兩個值之一。 就像是:

 extract.b = c(1,4)
 extracted <- df[a == extract.a & b == extract.b, extractcolumns]

...但是顯然這也不對。 例如,這有效:

 extracted <- df[(a == 1 | a == 2 | a == 4) & (b == 1 | b == 3), extractcolumns]

但是我希望能夠為a和b定義值,就像我在上面所做的那樣。

我希望這很清楚!

解決方案是使用%in%運算符而不是==來執行多重比較

df[a %in% extract.a & b %in% extract.b, extractcolumns]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM