![](/img/trans.png)
[英]Extracting rows from dataframe with conditions on multiple specific columns in 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)
我想做的是將這些列用於a
和b
特定值。 因此,我想出了例如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.