R的新手。 我有一个大型的基于文本的df,我想对其进行一些检查。 我想检查一个向量(“颜色”)中的哪些变量在另一个向量中具有两个不同的变量(“ a”和“ b”)。这应该是AND而不是OR类型的查询。 df看起来像这样
数据
structure(list(colour = c("blue", "blue", "red", "red", "red",
"purple", "purple"), letter = c("a", "c", "a", "m", "b", "a",
"b")), class = "data.frame", row.names = c(NA, -7L))
colour letter
blue a
blue c
red a
red m
red b
purple a
purple b
我认为最好的方法是通过子集设置,这样我就可以得到一个带有相关数据的新df('df2'),该数据应如下所示:
colour letter
red a
red b
purple a
purple b
我尝试了以下dplyr命令,但没有得到正确的结果('蓝色a'仍然存在)。
df2<-df%>%group_by(colour)%>%filter(letter %in% c('a','b'))
我将不胜感激!
答案 0 :(得分:1)
@Configuration
public class ArtemisConfig implements ArtemisConfigurationCustomizer {
@Override
public void customize(final org.apache.activemq.artemis.core.config.Configuration configuration) {
configuration.addConnectorConfiguration("nettyConnector", new TransportConnfiguration(NettyConnectorFactory.class.getName()));
configuration.addAcceptorConfiguration(new TransportConfiguration(NettyAcceptorFactory.class.getName()));
}
}
检查每个字母以查看它是否在集合{letter %in% c('a', 'b')
,a
}中(也就是说,它将对每个字母返回true是b
或 a
),并保留它们。您要做的是检查组中是否同时存在b
和组中的a
:
b
从您的文字或示例中尚不清楚,如果一个组包含df %>%
group_by(colour) %>%
filter('a' %in% letter & 'b' %in% letter)
## or, if you have more than a couple letters (maybe a vector of letters)
df %>%
group_by(colour) %>%
filter(all(c('a', 'b') %in% letter))
,a
和另一个字母,例如b
,该怎么办。上面的代码将保留整个组,只要其中包含c
和a
。
如果您只想保留组中的b
和a
字母(如果还有更多的话),请同样保留您的过滤条件:
b
如果您只想保留具有... filter(all(c('a', 'b') %in% letter), letter %in% c('a', 'b'))
和a
且没有其他字母的组,那么我可以这样做:
b