的多个逻辑条件我想通过指定不(!
),以保持在新的数据帧的行到子集(过滤器)一数据帧。这里是一个简化的样本数据帧:子集数据帧按行以除去
data
v1 v2 v3 v4
a v d c
a v d d
b n p g
b d d h
c k d c
c r p g
d v d x
d v d c
e v d b
e v d c
例如,如果列V1的行有一个“B”,“d”或“E”,我想摆脱观测该行,生产以下数据帧:
v1 v2 v3 v4
a v d c
a v d d
c k d c
c r p g
我一次都成功地基于一个条件进行子集化。例如,在这里我删除其中V1包含一个“B”行:
sub.data <- data[data[ , 1] != "b", ]
不过,我有很多很多这样的条件,所以做一次一个是不可取的。我都没有成功下列要求:
sub.data <- data[data[ , 1] != c("b", "d", "e")
或
sub.data <- subset(data, data[ , 1] != c("b", "d", "e"))
我已经尝试了一些其他的东西,以及像!%in%
,但似乎并不存在。 有什么建议吗?
不错,简单,谢谢。我不确定我更喜欢哪种解决方案,这是安德里提供的解决方案。它们既简单又有效。所有这三种解决方案都适用于我,而且我从未使用过'which()'。所以,很高兴能够介绍这个功能。 – Jota 2011-06-05 17:25:53
如果它可以帮助你决定是使用'subset'还是''',看看'subset'的帮助中的警告:*“这是一个交互式使用的方便函数。对于编程,最好使用标准的子集函数,特别是参数子集的非标准评估可能会有意想不到的后果。“* – Andrie 2011-06-06 12:45:11
@Andrie感谢您加入澄清。 – chl 2011-06-06 12:55:42