R 中有没有一种方法可以按两个顺序条件过滤数据帧?

Is there a way in R to filter a data frame by two sequential conditions?

我有一个表示 Pearson 相关结果的数据框。这是结构示例:

Row     | Column | cor
Event   |Event   | 1
mean    |Event   | .82
mean    |kurtosis| .30
mean    |entropy | .85
entropy |Event   | .71
entropy |kurtois | .25
kurtosis|Event   | .69

我需要过滤相关性,因此如果两个特征之间的相关性大于 0.80(条件 1)阈值,则仅选择与“事件”关联度最高的变量(条件 2)。 我希望最终产品看起来像这样:

Row     | Column | cor
mean    |Event   | .82

在上面的例子中,均值和熵的相关性高于阈值,但是,“均值”与“事件”的相关性更高,所以这就是最终输出。我正在使用生物数据,所以我有 100 多个特征,手动做的太多了。

我们可以做到

library(dplyr)
df1 %>%
     filter(Row  != Column, cor > 0.80, Column == 'Event')

-输出

#   Row Column  cor
#1 mean  Event 0.82

或使用data.table

library(data.table)
setDT(df1)[Row!= column & cor > 0.8 & Column == 'Event']

数据

df1 <- structure(list(Row = c("Event", "mean", "mean", "mean", "entropy", 
"entropy", "kurtosis"), Column = c("Event", "Event", "kurtosis", 
"entropy", "Event", "kurtois", "Event"), cor = c(1, 0.82, 0.3, 
0.85, 0.71, 0.25, 0.69)), class = "data.frame", row.names = c(NA, 
-7L))

像这样?所述条件并未涵盖所有基础,但这给出了此问题的预期结果

df[df$cor>.8 & df$Column=="Event" & df$Row!="Event",]