繁体   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