基于多个条件的子集数据框[重复]

Posted

技术标签:

【中文标题】基于多个条件的子集数据框[重复]【英文标题】:Subset data frame based on multiple conditions [duplicate] 【发布时间】:2011-12-21 18:04:53 【问题描述】:

我希望根据几列中的条件过滤数据框。例如,如果列 A = B 和列 E = 0,我如何删除行。

【问题讨论】:

像这样改变 Q 不是一个好主意——旧的答案会失效并且会带来混乱。以后尝试提出新问题。 相关:***.com/questions/6650510/… 【参考方案1】:

逻辑索引:

d<-d[!(d$A=="B" & d$E==0),]

【讨论】:

我尝试了很多复杂的答案——没有一个奏效。您的解决方案既简单又出色。 其实更简单的查看方式是:foo.isolated &lt;- subset(foo, !(sid == "sid104" &amp; game.num == 7)) 为什么仍然包括 NA NA's 杀死了我的两个小时 :D 请注意,它也会选择 NA's【参考方案2】:

子集是您最安全、最简单的答案。

subset(dataframe, A==B & E!=0)

mtcars 的真实数据示例

subset(mtcars, cyl==6 & am!=0)

【讨论】:

第二个很好的例子是过滤值列表。即 cyl 的 mtcars 子集不在 c(100, 200, 500) 中【参考方案3】:

使用which函数:

A <- c('a','a','b','b','b')
B <- c(1,0,1,1,0)
d <- data.frame(A, B)

r <- with(d, which(B==0, arr.ind=TRUE))
newd <- d[-r, ]

【讨论】:

-1。不要为此使用which。将条件更改为B==2,看看它是否给出了您想要的答案。参见,例如,rwiki.sciviews.org/… 为什么不使用which from Advanced R:“有两个重要的区别。首先,当逻辑向量包含NA时,逻辑子集将这些值替换为NA而which()丢弃第二,x[-which(y)] 不等于x[!y]:如果y 全部为FALSEwhich(y) 将是integer(0) 并且-integer(0) 仍然是integer(0),所以你会得到否值,而不是所有值。一般来说,避免从逻辑子集切换到整数子集,除非您需要,例如,第一个或最后一个 TRUE 值。"

以上是关于基于多个条件的子集数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章

R:基于多个条件的两个数据帧的子集

如何在Python中对满足某些条件的行进行子集[重复]

基于公共列合并多个数据框[重复]

从R中的数据框中子集列[重复]

如何从最后一行重复观察中制作子集数据框?

通过与另一个重叠的熊猫数据框子集[重复]